Höhere Analysis und Numerik

Das Skript zum Modul „Höhere Analysis und Numerik“ ist ein interaktives Skript. Die Codes sind direkt ausführbar.

Bemerkung

Das Skript zum Modul ist am entstehen.

Der Funktionalanalysis Teil des Skripts folgt dem Buch [BWHM10]. Für Details und Ergänzungen wird das Buch empfohlen. Es steht als pdf-Download in der Bibliothek der ZHAW zur Verfügung.

Sehr viel zusätzliches Material steht auf ngsolve.org bezüglich NGSolve und finite Elemente Methoden (FEM) zur Verfügung. Das Skript lehnt sich stark an diese Inhalte.

Einführung

Wir werden uns in diesem Modul mit

  • Partiellen Differentialgleichungen PDE (partial differential equation)

  • Numerischen Methoden für PDE

  • und den notwendigen Grundlagen

beschäftigen. Um einen kleinen Einblick und Motivation in die Thematik zu gewähren, starten wir mit ein paar Beispielen:

Poisson Gleichung

Das folgende Beispiel folgt dem analogen aus dem interaktiven Kurs von Joachim Schöberl [SHL21].\(\DeclareMathOperator{\opdiv}{div}\) \(\DeclareMathOperator{\setR}{R}\)

Problemstellung, Differentialgleichung

Die Methode der finiten Elemente ist eine Methode für die numerische Berechnung von Lösungen partieller Differentialgleichungen. Eine sehr wichtige Gleichung ist die Poisson Gleichung. Sie kann als Verallgemeinerung des eindimensionalen Randwertproblem

(1)\[\begin{split}\begin{split} -u''(x) & = f(x)\quad\forall\ x\in (0,1)\\ u(0) & = u(1) = 0 \end{split}\end{split}\]

interpretiert werden. Die Poisson Gleichung ist gegeben durch

\[ -\Delta u(x) = f(x) \quad \forall \, x \in \Omega \]

wobei \(\Omega\subset \mathbb{R}^n\) ein mehrdimensionales Gebiet im \(\mathbb{R}^n\) ist.

Die Poisson Gleichung ist ein Modell für verschiedene physikalische Phenomene. So kann zum Beispiel:

  • \(f\) kann eine Verteilung einer Wärmequelle und \(u\) die Temperatur

  • \(f\) kann auch eine Verteilung der elektrischen Ladung und \(u\) entsprechend das elektrostatische Potential.

Um eine eindeutige Lösung \(u\) zu erhalten, müssen Randbedingungen definiert werden. Im Beispiel werden wir die homogene Dirichlet Randbedingung benutzen:

\[ u(x) = 0 \quad \forall \, x \in \partial \Omega. \]

Das zur Gleichung (1) analoge Randwertproblem ist in dem Fall für die Poisson Gleichung gegeben durch

(2)\[\begin{split}\begin{split} -\Delta u(x) & = f(x) \quad \forall \, x \in \Omega\\ u(x) & = 0 \quad \forall \, x \in \partial \Omega \end{split}\end{split}\]

Um eine numerische Lösung des Randwertproblems zum Beispiel im zweidimensionalen Raum berechnen zu können, müssen wir das Gebiet diskretisieren (Meshing). Wir betrachten das Problem auf dem Einheitsquadrat:

from netgen.geom2d import unit_square
from ngsolve import *
from ngsolve.webgui import Draw
mesh = Mesh(unit_square.GenerateMesh(maxh=0.1))
Draw(mesh);

Schwache Gleichung

Für die numerische Berechnung benötigen wir die schwache Gleichung (oder auch variationelle Formulierung) der Poisson Gleichung. Die oben formulierte partielle Differentialgleichung des Randwertproblems wird starke Gleichung genannt. Die schwache Gleichung ist die Ausgangsformulierung für die Diskretisierungsmethode der finiten Elemente.

Ein Weg auf die schwache Gleichung zu kommen ist folgender: Multipliziere die partielle Differentialgleichung mit einer sogenannten Testfunktion. Die Testfunktion ist eine beliebige Funktion aus einem geeigneten Funktionenraum \(V\). Multiplikation der PDE mit \(v\in V\) liefert

\[ - \Delta u(x) v(x) = f(x) v(x) \qquad \forall x \in \Omega \]

Nun integrieren wir über das gesamte Gebiet \(\Omega\):

\[ - \int_\Omega \Delta u(x) v(x) dx = \int_\Omega f(x) v(x) dx \]

Mit Hilfe der partiellen Integration im Mehrdimensionalen (Satz von Gauss auf das Vektorfeld \(\nabla u\, v\) angewandt):

\[ \int_{\partial \Omega} n \nabla u \, v\, dA = \int_\Omega \opdiv (\nabla u \, v) dx = \int_{\Omega} \Delta u v + \nabla u \nabla v dx \]

können wir die linke Seite in der Form

\[ \int_\Omega \nabla u \nabla v - \int_{\partial \Omega} \frac{\partial u}{\partial n} v = \int_\Omega f v \]

schreiben.

Im Fall der Dirichlet Randbedingung können wir Testfunktionen \(v\) benutzen, für welche \(v(x) = 0\) auf dem Rand \(\partial\Omega\) gilt.

Wir erhalten damit das schwache Problem: Finde \(u\in V\) so, dass \(u=0\) auf \(\partial\Omega\) und

(3)\[ \int_\Omega \nabla u\cdot \nabla v dx = \int_\Omega f v dx \]

für alle Testfunktionen \(v\) mit \(v=0\) auf \(\partial\Omega\) erfüllt ist.

Der Gewinn der schwachen Formulierung ist, dass wir das Problem mit der zweiten örtlichen Ableitung auf ein Problem mit erster Ableitung reduzieren können. Was natürlich die Frage aufwirft, wann eine schwache Lösung (Lösung der schwachen Gleichung) auch eine starke Lösung ist?

Der Sobolev Raum \(H^1\), linear und bilinear Formen

Der für das Beispiel geeignete Funktionenraum für die Lösungen ist der Sobolev Raum

\[H^1 := \{u\in L_2(\Omega) | \nabla u\in L_2(\Omega)^n \}\]

Das hochgestellte 1 bezieht sich auf die erste Ableitung, welche quadratisch integrierbar sein soll (\(L_2\)). Wir werden den Ableitungsbegriff für die Anwendung erweitern müssen, denn nicht alle Funktionen im \(L_2\) sind nicht stetig differenzierbar. Die zum Vektorraum \(H^1\) zugehörige Norm ist gegeben durch

\[\| u\|_{H^1} = \| u\|_{L_2} + \| \nabla u\|_{L_2}\]

und für das Skalarprodukt gilt

\[(u,v)_{H^1} = (u,v)_{L_2} + (\nabla u,\nabla v)_{L_2}.\]

Der Funktionenraum \(H^1\) ist ein vollständiger Raum mit Skalarprodukt. Einen solchen Raum nennt man Hilbert Raum.

Es macht keinen Sinn Randwerte von \(L_2\) Funktionen zu definieren. Für Funktionen aus dem Sobolev Raum \(H^1\) existiert jedoch das Trace Theorem, welches besagt, dass Randwerte wohl definiert sind. Es gilt für \(u\in H^1(\Omega)\)

\[u|_{\partial \Omega} \in L_2(\partial \Omega).\]

Damit macht es Sinn einen Unterraum \(H_0^1\) mit homogenen Dirichlet Randbedingungen zu definieren

\[H_0^1 = \{u\in H^1 | u|_{\partial \Omega} = 0\}.\]

Wir betrachten nun die Gleichung (3). Die linke Seite stellt eine Bilinearform \(A: H^1\times H^1 \to \mathbb{R}\)

\[A(u,v) = \int_\Omega \nabla u\cdot\nabla v\]

dar und die rechte Seite eine Linearform \(f:H^1 \to \mathbb{R}\)

\[f(v) := \int_\Omega f(x) v(x) dx.\]

Wir können damit das schwache Problem auch wie folgt beschreiben

(4)\[\text{finde}\ u\in H_0^1(\Omega): \quad A(u,v) = f(v)\quad \forall v\in H_0^1(\Omega).\]

Dieser abstrakte Formalismus von Hilber Räumen, Bilinear- und Linearformen passt auf eine sehr grosse klasse von (elliptischen) partiellen Differentialgleichungen.

Finite Elemente Methode

Die schwache Formulierung ist die Ausgangsform für die Methode der finiten Elemente. Da wir nicht in einem unendlich dimensionalen Hilbertraum rechnen können, müssen wir einen endlich dimensionalen Unterraum benutzen.

\[V_h \subset H_0^1\]
V = H1(mesh, order=1, dirichlet = '.*')
u,v = V.TnT()

Wir suchen nun Lösungen für schwache Problem (4) im endlich dimensionalen Vektorraum \(V_h\):

(5)\[\text{finde}\ u_h\in V_h: \quad A(u_h,v_h) = f(v_h)\quad \forall v_h\in V_h.\]

Die finite Elemente Lösung approximiert die exakte Lösung \(u\), wobei der Diskretisierungsfehler \(\|u-u_h\|_{H^1}\) für \(h\to 0\) ebenfalls gegen Null streben soll.

Um die Lösung \(u_h\) berechnen zu können, müssen wir eine Basis \(p_i, i=1,\ldots, N\) für den Funktionenraum \(V_h\) wählen, wobei \(N = \mathop{dim} V_h\).

print('dim V = N = ',V.ndof)
dim V = N =  137

\(u_h\) können wir daher als

\[u_h(x) = \sum_{i=1}^N u_i p_i(x)\]

schreiben. Die Koeffizienten \(u_i\) schreiben wir als Koeffizientenvektor \(u=(u_1, \ldots, u_n) \in \mathbb{R}^N\).

gfu = GridFunction(V)

Anstatt, dass wir mit allen Funktionen aus dem \(V_h\) test, reicht es mit den Basisfunktionen \(p_j(x)\) zu testen. Damit haben wir das finite Element Problem

\[\text{finde}\ u\in \mathbb{R}^N: \quad A(\sum_{i=1}^N u_i p_i,p_j) = f(p_j)\quad \forall j = 1, \ldots, N.\]

Da \(A(\cdot, \cdot)\) eine Bilinearfunktion ist, können wir die Summe aus der Bilinearfunktion nehmen. Es folgt

(6)\[\text{finde}\ u\in \mathbb{R}^N: \quad \sum_{i=1}^N A(p_i,p_j) u_i = f(p_j)\quad \forall j = 1, \ldots, N.\]

Da die Basisfunktionen \(p_i\) bekannt sind, können wir die Matrix \(A\in\mathbb{R}^{N\times N}\) welche die Bilinearfunktion beschreibt berechnen. Die Matrix Einträge sind gegeben durch

\[A_{j,i} = A(p_i,p_j) = \int_\Omega \nabla p_i\cdot \nabla p_j dx.\]
a = BilinearForm(V)
a += grad(u)*grad(v)*dx
a.Assemble();

Die Linearform \(f\) kann durch den Vektor \(f\in\mathbb{R}^N\)

\[f_j = f(p_j) = \int_\Omega f(x)p_j(x)dx\]

beschrieben werden.

funcf = CoefficientFunction(10)

f = LinearForm(V)
f += funcf*v*dx
f.Assemble();

Das Lösen des finite Elementproblems (6) resultiert somit im Lösen des linearen Gleichungssystems

\[A u = f\]
gfu.vec.data = a.mat.Inverse(freedofs=V.FreeDofs()) * f.vec
Draw(gfu);

Variable Koeffizienten

Das folgende Beispiel folgt dem analogen aus dem interaktiven Kurs von Joachim Schöberl [SHL21].\(\DeclareMathOperator{\opdiv}{div}\) \(\DeclareMathOperator{\setR}{R}\)

from ngsolve import *
from ngsolve.webgui import Draw

Problem

Ein Setup mit unterschiedlicher Wärmeleitungskoeffizienten wir mit Hilfe der Gleichung

\[ -\opdiv \lambda(x) \nabla u(x) = f(x) \]

modelliert, wobei \(\lambda=\lambda(x)\) der ortsabhängige Wärmeleitungskoeffizient ist. Der zugehörige Wärmefluss

\[ q = -\lambda \nabla u \]

ist gegeben durch den Gradient der Temperatur \(\nabla u\). Im Fall, dass \(\lambda\) diskontinuierlich ist, wird die Gleichung im Sinne von Distributionen verstanden. Dies beinhaltet Interface Bedingungen: Die Temperatur auf der linken und rechten Seite sind gleich und der Wärmefluss der linken in die rechte Seite müssen gleich gross sein:

\[\begin{split}\begin{split} u_l & = & u_r \\ \lambda_l \frac{\partial u_r}{\partial n} & = & \lambda_r \frac{\partial u_r}{\partial n} \end{split}\end{split}\]

Die variationelle Form des Problems ist gegeben durch: finde \(u \in H^1(\Omega)\) mit

\[ \int_\Omega \lambda(x) \nabla u \nabla v dx = \int_\Omega f v dx \]

Diskontinuierliche Koeffizienten bilden kein Problem. Beide Interface Bedingungen werden erfüllt:

  • Stetigkeit der Temperatur \(u\) durch die Stetigkeit der Ansatzfunktionenraumes

  • Stetigkeit des Wärmeflusses in einem schwachen Sinne, durch Neumann Randbedingungen.

Geometrie und Mesh

from netgen.geom2d import *
geo = SplineGeometry()
geo.AddRectangle( (0,0), (1,1), leftdomain=1, rightdomain=0, 
                 bcs=['b','r','t','l'])
geo.AddCircle( (0.3,0.7), 0.1, leftdomain=2, rightdomain=1)
geo.AddRectangle ( (0.2,0.2), (0.9,0.3), leftdomain=3, rightdomain=1)
geo.SetMaterial(1, "air")
geo.SetMaterial(2, "source")
geo.SetMaterial(3, "bar")

mesh = Mesh(geo.GenerateMesh(maxh=0.03))
mesh.Curve(3)
Draw (mesh);

Die Subdomains (Materials) sind gegeben durch:

print (mesh.GetMaterials())
('air', 'source', 'bar')

Die Geometrie hat folgende Ränder (innere und äussere):

print (mesh.GetBoundaries())
('b', 'r', 't', 'l', 'default', 'default', 'default', 'default', 'default', 'default', 'default', 'default')
V = H1(mesh, order=3, dirichlet="b|r")
u = V.TrialFunction()
v = V.TestFunction()

Wir definieren nun das Material in dem wir den Wärmekoeffizient stückweise konstant ansetzen:

lamvalues = { "air" : 1, "bar" : 1e2, "source" : 2 }
lam = CoefficientFunction( 
    [lamvalues[mat] for mat in mesh.GetMaterials()])
Draw (log(lam), mesh, "log lambda");

Wir nützen die Wärmeleitfähigkeit für die Definition der Bilinearform:

a = BilinearForm(V)
a += lam*grad(u)*grad(v)*dx

f = LinearForm(V)
f += 1*v*dx("source")
a.Assemble()
f.Assemble()
<ngsolve.comp.LinearForm at 0x7fd8d1bba630>

und lösen das System:

gfu = GridFunction(V)
gfu.vec.data = a.mat.Inverse(V.FreeDofs()) * f.vec

Für die Wärmeverteilung erhalten wir:

Draw (gfu, mesh, "temperature");

Für den Gradient der Wärmeverteilung \(\nabla u\)

Draw (grad(gfu), mesh, "gradient",vectors=grad(gfu));

und für den Wärmefluss \(-\lambda \nabla u\):

Draw (-lam*grad(gfu), mesh, "heatflux");

Maxwell Gleichungen

from netgen.csg import *
from ngsolve import *
from ngsolve.webgui import Draw

Die Quelle des Beispiels ist in der NGSolve Dokumentation [S+21].

Geometrie

Mit Hilfe der netgen Bibliothek können auch einfach 3D Geometrien beschrieben werden. Für komplexere kann auf die OCC Bibliothek zurückgegriffen werden.

def MakeGeometry():
    geometry = CSGeometry()
    box = OrthoBrick(Pnt(-1,-1,-1),Pnt(2,1,2)).bc("outer")

    core = OrthoBrick(Pnt(0,-0.05,0),Pnt(0.8,0.05,1))- \
           OrthoBrick(Pnt(0.1,-1,0.1),Pnt(0.7,1,0.9))- \
           OrthoBrick(Pnt(0.5,-1,0.4),Pnt(1,1,0.6)).maxh(0.2).mat("core")

    coil = (Cylinder(Pnt(0.05,0,0), Pnt(0.05,0,1), 0.3) - \
            Cylinder(Pnt(0.05,0,0), Pnt(0.05,0,1), 0.15)) * \
            OrthoBrick (Pnt(-1,-1,0.3),Pnt(1,1,0.7)).maxh(0.2).mat("coil")

    geometry.Add ((box-core-coil).mat("air"), transparent=True)
    geometry.Add (core, col=(0.5,0.5,0))
    geometry.Add (coil, col=(0,1,0))
    return geometry

geo = MakeGeometry()
# Draw (geo)
mesh = Mesh(geo.GenerateMesh(maxh=0.5))
mesh.Curve(5)
Draw (mesh, clipping = { "pnt" : (0,0,0), "vec" : (0,1,0) });

Magnetostatisches Problem

Mit Hilfe Maxwell Gleichungen folgt das partielle Differentialgleichungssystem für statische Magnetfelder, gegeben durch

\[\begin{split}\begin{split} \mathop{curl} H & = j\\ \mathop{div} B & = 0. \end{split}\end{split}\]

Mit Hilfe des Vektorpotential Ansatz \(B = \mathop{curl} A\), motiviert durch die Forderung \(\mathop{div} B = 0\) folgt die PDE

\[\mathop{curl} (\mu^{-1}(x) \mathop{curl} A) = j,\]

wobei \(A\) das gesuchte Vektorpotential und \(j\) eine externe Stromdichte sei.

Wir können wiederum eine schwache Gleichung berechnen, wobei der geeignete Funktionenraum in dem Fall durch den \(H(\mathop{curl})\) gegeben ist. Die schwache Gleichung lautet

(7)\[\int_\Omega \mu^{-1}(x) \mathop{curl} A \cdot \mathop{curl} \Psi dx = \int_\Omega j(x)\cdot \Psi dx\quad \forall\ \Psi\in H(\mathop{curl}, \Omega).\]
V = HCurl(mesh,order=3)
u,v = V.TnT()
gfu = GridFunction(V)

Das Rechengebiet \(\Omega\) setzt sich hier aus den Teilgebiete

  • Luft (air)

  • Kern (core)

  • Spule (coil) zusammen.

mesh.GetMaterials()
('air', 'core', 'coil')

Auf den jeweiligen Teilgebiete haben wir unterschiedliche Materialien, welche sich in der relativen Permeabilität unterscheiden. Wir definieren die relative Permeabilität wie folgt:

mur = { "core" : 1000, "coil" : 1, "air" : 1 }
mu0 = 1.257e-6
nu_coef = [ 1/(mu0*mur[mat]) for mat in mesh.GetMaterials() ]
nu = CoefficientFunction(nu_coef)

Um die eingeprägte Stromdichte in der Spule beschreiben zu können, ist der Richtungsvektor \(w\) der Stromdichte erforderlich. Wir haben im Beispiel eine zylindrische Spule. Entsprechend definieren wir den Richtungsvektor \(w\)

w = CoefficientFunction((y,0.05-x,0))/sqrt(x*x+y*y)

Damit können wir nun die Bilinearform und Linearform des Systems (7) definieren und berechnen:

a = BilinearForm(V)
a += nu*curl(u)*curl(v)*dx + 1e-6*nu*u*v*dx

f = LinearForm(V)
f += w * v * dx("coil")

Da das Problem abhängig von Mesh Grösse und Polynomordnung der FEM Basisfunktionen schon recht gross werden kann, benutzen wir einen iterativen Solver:

c = Preconditioner(a, type="multigrid")

Nun berechnen wir die Systemmatrix, den rechten Vektor und die Lösung des Systems parallel mit shared Memory:

with TaskManager():
    a.Assemble()
    f.Assemble()
    solver = CGSolver(mat=a.mat, pre=c.mat)
    gfu.vec.data = solver * f.vec
Draw (curl(gfu), mesh, "B-field", draw_surf=False, \
      clipping = { "pnt" : (0,0,0), "vec" : (0,1,0), "function" : False },
      vectors = { "grid_size" : 100 });

Test

from netgen.geom2d import unit_square
from ngsolve import *
from ngsolve.webgui import Draw
mesh = Mesh(unit_square.GenerateMesh(maxh=1/3))
Draw(mesh);

Python

Für numerische Berechungen benutzen wir im Kurs Python. Eine gute Einführung in Python ist im interaktiven Jupyter-Book Python Programming And Numerical Methods: A Guide For Engineers And Scientists zu finden.

Im wesentlichen werden wir fundamentale Funktionalität von Python benutzen. Für numerische Berechnungen werden wir auf NumPy und SciPy zurückgreifen. Die Visualisierung kann sehr matlab nahe mit Hilfe von Matplotlib umgesetzt werden.

Falls Sie Python mit den entsprechenden Module noch nie benutzt haben, ist es sehr sinnvoll sich vorab mit dem wesentlichen auseinander zu setzen.

NGSolve

Im Rahmen der numerischen Methoden für partielle Differentialgleichungen werden wir die Methode der finiten Elemente kennen lernen. Wir werden für die Umsetzung auf eine C++ Bibliothek NGSolve zurückgreifen, welche eine umfangreiche Python-Schnittstelle zur Verfügung stellt.

Netgen/NGSolve ist eine hochleistungsfähige Multiphysik-Finite-Elemente-Software. Sie wird häufig zur Analyse von Modellen aus den Bereichen Festkörpermechanik, Strömungsmechanik und Elektromagnetik eingesetzt. Dank der flexiblen Python-Schnittstelle können neue physikalische Gleichungen und Lösungsalgorithmen leicht implementiert werden.

Das Ziel des Moduls besteht in der Vermittlung der mathematischen Grundlagen und insbesondere auch numerischen Anwendung derer auf konkrete Beispiele aus der Ingenieur Praxis.

Bemerkung

Installieren Sie NGSolve auf ihrem Rechner. Die dazu notwendigen Anleitungen finden Sie auf (https://ngsolve.org) unter dem Abschnitt INSTALLATION:

Jupyter Hub

Auf dem Rechner CLT-DSK-T-7307.zhaw.ch ist ein JupyterHub eingerichtet. Der Rechner ist nur im Intranet verfügbar (VPN Verbindung notwendig).

JupyterHub

Ein Account kann selbständig kreiert werden, wobei dieser authentifiziert wird. Bitte benutzen Sie als User-Name Ihr ZHAW Kürzel und ein sicheres Passwort.

_images/native_auth_flow.png

Abb. 1 Authetication workflow

Grundlegende Räume

Vektorräume

In den Modulen linearen Algebra, Analysis und Numerik wurden Vektorräume und Normen mit dem \(\mathbb{R}^n\) eingeführt und benutzt. Wir definieren hier der Vollständigkeit halber die Begriffe nochmals und erweitern die Anwendung auf allgemeinere Räume, insbesondere müssen diese nicht endlich dimensional sein.

Beginnen wir mit dem Begriff der Vektorräume. Um diesen definieren zu können, benötigen wir einen Zahlenkörper. In aller Regel benutzen wir die reellen Zahlen \(\mathbb{R}\). Wir legen mit dem folgenden Axiom fest, was die reellen Zahlen sind:

Definition: reelle Zahlen

Es existiere eine Menge \(\mathbb{R}\) mit folgenden Eigenschaften:

  • Es existieren Operationen

    \[\begin{split}\begin{split} + : \mathbb{R} \times \mathbb{R} \ & \to \ \mathbb{R}\quad\text{Addition}\\ \cdot : \mathbb{R} \times \mathbb{R} \ & \to \ \mathbb{R}\quad\text{Multiplikation}\end{split}\end{split}\]

    mit den Eigenschaften:

    • Assoziativgesetze

      \[\begin{split}\begin{split} (a+b) + c & = a + (b+c)\quad \forall\ a,b,c \in \mathbb{R}\\ (a\cdot b) \cdot c & = a \cdot (b\cdot c)\quad \forall\ a,b,c \in \mathbb{R} \end{split}\end{split}\]
    • Kommutativgesetze

      \[\begin{split}\begin{split} a + b & = b + a \quad \forall\ a,b \in \mathbb{R}\\ a\cdot b & = b \cdot a\quad \forall\ a,b \in \mathbb{R} \end{split}\end{split}\]
    • Neutrale Elemente

      \[\begin{split}\begin{split} \exists 0: a + 0 = a\quad \forall a \in \mathbb{R}\\ \exists 1: a \cdot 1 = a\quad \forall a \in \mathbb{R} \end{split}\end{split}\]
    • Inverse Elemente

      \[\begin{split}\begin{split} \forall a\in \mathbb{R}\ \exists a'\in\mathbb{R} : a + a' = 0\\ \forall a\in \mathbb{R}\setminus \{ 0\}\ \exists \tilde{a}\in\mathbb{R} : a \cdot \tilde{a} = 1 \end{split}\end{split}\]

      Schreibweise: \(-a := a', a - a := a + (-a), \frac{1}{a} := \tilde{a}, \frac{a}{a} := a\cdot \frac{1}{a}\)

    • Distributivgesetz

      \[a\cdot (b+c) = a\cdot b + a\cdot c\]
  • \(\mathbb{R}\) ist geordnet, d.h. es existiert eine Relation \(\le\) so, dass gilt

    • \(\mathbb{R}\) ist totalgeordnet, d.h.

      1. \(\mathbb{R}\) ist teilgeordnet, d.h.

        • Für alle \(x\in\mathbb{R}\) gilt: \(x \le x\).

        • Ist \(x \le y\) und \(y\le z\) für \(x,y,z\in\mathbb{R}\), so ist \(x \le z\).

        • Ist \(x \le y\) und \(y \le x\) für \(x,y \in \mathbb{R}\), so ist \(x = y\).

        (Mit \(x<y\) bezeichnen wir den Fall \(x \le y\) und \(x \not= y\).)

      2. Für je zwei Elemente \(x,y \in\mathbb{R}\) gilt

        \[x \le y\quad \text{oder}\quad y\le x.\]
    • Die Ordnung ist verträglich mit Addition und Multiplikation, d.h. für \(a,b,c\in\mathbb{R}\) gilt

    \[\begin{split}\begin{array}{c} a \le b \Rightarrow a+c \le b+c\\ a \le b, 0 \le c \Rightarrow a\cdot c \le b\cdot c \end{array}\end{split}\]
  • \(\mathbb{R}\) ist vollständig. Das heisst, dass jede nicht leere nach oben beschränkte Menge reeller Zahlen eine kleinste obere Schranke besitzt.

Im Allgemeinen ist ein (Zahlen)-Körper über eine Gruppe wie folgt definiert:

Definition: Gruppe

Ein Tupel \((G, \cdot)\) bestehend aus einer Menge \(G\) und einer Verknüpfung \(\cdot : G \to G\) heisst Gruppe, falls die Verknüpfung assoziativ ist, ein neutrales Element \(e\in G\) existiert und für alle \(a \in G\) ein \(b\in G\) exisitert so dass \(a\cdot b = b\cdot a = e\) gilt. Ist die Verknüpfung kommutativ, nennt man die Gruppe kommutativ.

Ein Körper lässt sich somit wie folgt allgemein definieren:

Definition: Körper

Ein Körper ist eine Tripel \((K, +, \cdot)\) mit folgenden Eigenschaften:

  • \((K, +)\) ist eine kommutative Gruppe mit neutralem Element \(0_K\).

  • \((K, \cdot)\) ist eine kommutative Gruppe mit neutralem Element \(1_K\).

  • (Distributivgesetz) Für alle \(a,b,c\in K\) gilt

\[\begin{split}\begin{split}a\cdot (b+c) & = a\cdot b + a\cdot c\\ (a+b)\cdot c & = (a\cdot c) + (b\cdot c)\end{split}\end{split}\]

Beispiele für Körper sind folgende Tupel

  • \((\mathbb{R}, +, \cdot)\) und \((\mathbb{Q}, +, \cdot)\) mit der üblichen Addition und Multiplikation,

  • \((\mathbb{Z}, +, \cdot)\) bildet keine Gruppe.

Mit Hilfe eines Körpers können wir nun einen \(\mathbb{K}\)-Vektorraum wie folgt definieren:

Definition: \(\mathbb{K}-Vektorraum\)

Ein \(\mathbb{K}\)-Vektorraum ist ein Tripel \((V, +, \cdot)\) mit den Eigenschaften

  1. \((V,+)\) ist eine kommutative Gruppe

  2. Die Abbildung \(\cdot : \mathbb{K} \times V \to V\) genügt den Eigenschaften

    • \(\alpha\cdot (\beta\cdot x) = (\alpha\cdot \beta)\cdot x\)

    • \(\alpha\cdot (x+y) = (\alpha\cdot x) + (\alpha\cdot y)\)

    • \((\alpha+\beta)\cdot x = (\alpha\cdot x) + (\beta\cdot x)\)

    • \(1_K \cdot x = x\)

    wobei \(\alpha, \beta\in\mathbb{K},\ x, y\in V\).

Bemerkung

Wenn man in einem allgemeinen Kontext von Vektoren spricht, so meint man damit die Elemente eines Vektorraumes. Spricht man von Skalaren, so sind die Elemente des zugrundeliegenden Körpers gemeint.

Beispiele:

  • Vektorraum \(\mathbb{R}^n\)

    Anwendung in python:

import numpy as np
x = np.array([1,2,3,4])
y = np.array([-4,-3,-2,-1])

print('x+y=',x+y)
print('5*(x+y)=',5*(x+y),'= 5*x+5*y = ',5*x+5*y)
x+y= [-3 -1  1  3]
5*(x+y)= [-15  -5   5  15] = 5*x+5*y =  [-15  -5   5  15]
  • Vektorraum der stetigen Funktionen.

    Sei \(\alpha \in \mathbb{R}\) und \(u,v : [a,b]\subset \mathbb{R} \to \mathbb{R}\) zwei stetige Funktionen. Zeige, dass die Summe zweier stetiger Funktionen \((u+v)\) wieder stetig ist und dass das Vielfache einer stetigen Funktion \((\alpha u)\) ebenso stetig ist.

    Aufgabe

    Beweise die Aussage.

Metrische Räume

Metrik

In der Analysis will man oft eine Distanz zwischen zwei Elemente eines Vektorraumes angeben. Insbesondere bei Konvergenzbetrachtungen ist der Abstand zweier Elemente existentiell wichtig. Der Konvergenzbegriff in \(\mathbb{R}\) unter Hinzunahme der folgenden Distanzfunktion

\[\begin{split}\begin{split} d : \mathbb{R}\times\mathbb{R} & \to \mathbb{R}^+\\ (x,y) & \mapsto d = d(x,y) := |x-y|\end{split}\end{split}\]

lautet wie folgt: Die Folge \(\{x_n\}\) aus \(\mathbb{R}\) heisst konvergent gegen \(x_0\in\mathbb{R}\), wenn es zu jedem \(\varepsilon > 0\) eine natürliche Zahl \(n_0 = n_0(\varepsilon)\) gibt, so dass

\[d(x_n,x_0) = |x_n-x_0| < \varepsilon\]

für alle \(n \ge n_0\) gilt.

Definition: Metrik

Eine nichtleere Menge \(X\) mit Elemente \(x, y, z, \ldots\) heisst ein metrischer Raum, wenn jedem Paar \(x, y \in X\) eine reelle Zahl \(d(x,y)\), genannt Abstand oder Metrik, zugeordnet ist, mit den Eigenschaften: Für alle \(x,y,z\in X\) gilt

  1. \(d(x,y) \ge 0,\ d(x,y) = 0\) genau dann, wenn \(x=y\) ist

  2. \(d(x,y) = d(y,x)\) Symmetrieeigenschaft

  3. \(d(x,y) \le d(x,z) + d(z,y)\) Dreiecksungleichung.

Für metrische Räume verwenden wir wieder die Schreibweisen: \((X, d)\) oder kurz \(X\), falls der Kontext klar ist.

Aufgabe

Zeige, dass für \(X = C[0,1]\), den stetigen Funktionen auf dem Intervall \([0,1]\) die Abbildung

(8)\[\begin{split}\begin{split}d_{\text{max}} : X \times X & \to \mathbb{R}^+\\ (x,y) & \mapsto d_{\text{max}}(x,y) := \max_{t\in[0,1]} |x(t)-y(t)|\end{split}\end{split}\]

eine Metrik definiert (Maximumsmetrik).

Beispiel:

import numpy as np
import matplotlib.pyplot as plt

x = lambda t: t**2
y = lambda t: t*(1-t)+2/(1+((t-0.5)/0.02)**2)

t = np.linspace(0,1,400)

plt.plot(t,x(t), label='$x(t)$')
plt.plot(t,y(t), label='$y(t)$')
plt.legend()
plt.show()
_images/GrundlegendeRaeume_3_0.png

Die Maximummetrik berechnet die maximale Differenz der beiden Funktionen:

plt.plot(t,np.abs(x(t)-y(t)), label='$|x(t)-y(t)|$')
plt.legend()
plt.show()
_images/GrundlegendeRaeume_5_0.png

Aufgabe

Berechne analytisch den exakten Wert der Maximumsmetrik für die beiden Funktionen \(x,y\) aus obigem Beispiel.

Eine weitere wichtige Metrik ist die Integralmetrik. Es sei \(X\) die Menge aller reellwertigen Funktionen, die auf einem (nicht notwendig beschränkten) Intervall \((a,b)\) stetig sind und für die das Integral

\[\int_a^b |x(t)|^p dt, \quad 1\le p < \infty\]

im Riemannschen Sinne existiert. Setzen wir für \(x(t), y(t)\in X\)

Definition: Integralmetrik

\[d_p(x,y) := \left(\int_a^b |x(t)-y(t)|^p dt\right)^{1/p},\quad 1\le p < \infty\]

so wird \(X\) mit dieser Integralmetrik zu einem metrischen Raum. Der Beweis nutzt die Minkowski-Ungleichung für Integrale

\[\left(\int_a^b |u(t)-v(t)|^p dt\right)^{1/p} \le \left(\int_a^b |u(t)|^p dt\right)^{1/p} + \left(\int_a^b |v(t)|^p dt\right)^{1/p}.\]

Beispiel:

plt.plot(t,x(t), label='$x(t)$')
plt.plot(t,y(t), label='$y(t)$')
plt.fill_between(t,x(t),y(t),alpha=0.3, label='$x(t)-y(t)$')
plt.legend()
plt.show()
_images/GrundlegendeRaeume_7_0.png

Aufgabe

Berechne die Integralmetrik für \(p=2\) und \(p=1/2\) für das Beispiel oben.

Aufgabe

In der Codierungstheorie ist ein \(n\)-stelliges Binärwort ein \(n\)-Tuppel \((\xi_1, \ldots, \xi_n)\), wobei \(\xi_k \in \{0,1\}\) für \(k=1,\ldots, n\). Bezeichne \(X\) die Menge aller dieser Binärwörter. Für \(x = \xi_1 \xi_2 \ldots \xi_n\), \(y = \eta_1 \eta_2 \ldots \eta_n\) ist die Hamming-Distanz zwischen \(x\) und \(y\) durch

\[d_H(x,y) := \text{Anzahl der Stellen an denen sich $x$ und $y$ unterscheiden}\]

definiert. Zeige:

  1. \(d_H(x,y)\) lässt sich durch

    \[d_H(x,y) := \sum_{k=1}^n [(\xi_k+\eta_k) \mod 2]\]

    darstellen.

  2. \((X,d_H)\) ist ein metrischer Raum.

Die topologischen Begriffe wie offene Kugel, innerer Punkt, Häufungspunkt, abgeschlossen, beschränkt lassen sich mit Hilfe der Metrix \(d\) für einen metrischen Raum \((X,d)\) direkt aus dem aus der Analysis bekannten \(\mathbb{R}^n\) übertragen.

Definition: Konvergenz

Eine Folge \(\{x_n\}\subset X\) von Elemente aus \(X\) heisst konvergent, wenn es ein \(x_0\in X\) gibt mit

\[d(x_n,x_0) \to 0\quad \text{für}\quad n\to\infty,\]

dh. wenn es zu jedem \(\varepsilon > 0\) ein \(n_0 = n(\varepsilon)\in\mathbb{N}\) gibt, mit

\[d(x_n,x_0) < \varepsilon\quad\text{für alle}\quad n\ge n_0.\]

Schreibweise: \(x_n \to x_0\) für \(n \to \infty\) oder \(\lim_{n\to\infty} x_n = x_0\), \(x_0\) heisst Grenzwert der Folge \(\{x_n\}\)

Der Grenzwert einer konvergenten Folge ist eindeutig bestimmt. Dies lässt sich per Widerspruch wie folgt leicht zeigen. Seien \(x_0\) und \(y_0\) zwei verschiedene Grenzwerte. Daher gilt

\[\begin{split}\begin{split} 0 < d(x_0,y_0) & \le d(x_0, x_n) + d(x_n,y_0)\\ & = \underbrace{d(x_n,x_0)}_{\to 0\ \text{für}\, n\to 0} + \underbrace{d(x_n,y_0)}_{\to 0\ \text{für}\, n\to 0} \to 0\ \text{für}\, n\to 0.\end{split}\end{split}\]

Es folgt damit \(d(x_0,y_0)=0\) und damit \(x_0 = y_0\).

Funktionenfolgen

Wir starten mit einem intuitiven Begriff der Konvergenz für Funktionenfolgen:

Definition: Punktweise Konvergenz

Man nennt eine Funktionenfolge \(\{x_n(t)\} \subset C[a,b]\) punktweise konvergent, wenn für jedes \(t\in [a,b]\) die Zahlenfolge \(x_1(t), x_2(t), \ldots \) konvergiert. Die Grenzfunktion \(x\) ist dabei durch

\[\lim_{n\to\infty} x_n(t) = x(t)\quad\text{für jedes}\quad t\in [a,b]\]

gegeben.

Die punktweise Konvergenz erweist sich für die Analysis als zu schwach. Als Beispiel dazu betrachten wir die Folge der Funktionen \(x_n \subset C(\mathbb{R})\)

\[x_n(t) = \frac{1}{1+x^{2n}},\quad n=1,2,3,\ldots\]

Wie im Python Code unten leicht zu sehen ist, konvergiert die Folge punktweise gegen

\[\begin{split}x(t) = \begin{cases} 1,\quad \text{für}\ |t| < 1,\\ 1/2, \quad \text{für}\ |t| = 1,\\ 0, \quad \text{für}\ |t| > 1.\end{cases}\end{split}\]

Obwohl alle Funktionen \(x_n\) stetig sind, ist die Grenzfunktion \(x\) unstetig und damit nicht in unserem Funktionenraum (oder Vektorraum) \(x\not\in C(\mathbb{R})\)! Das ist für uns unbrauchbar.

def x(t):
    y = np.zeros_like(t)
    y[np.abs(t)<1] = 1
    y[np.abs(t)==1] = 0.5
    return y

xn = lambda t,n : 1/(1+t**(2*n))
t = np.linspace(-3,3,400)

plt.plot(t,xn(t,1), label='$xn=1$')
plt.plot(t,xn(t,4), label='$xn=4$')
plt.plot(t,xn(t,8), label='$xn=8$')
plt.plot(t,x(t),'--', label='Grenzfunktion')
plt.legend()
plt.show()
_images/GrundlegendeRaeume_9_0.png

Das Problem der punktweisen Konvergenz besteht darin, dass für jedes \(t\in\mathbb{R}\) eine eigene Schranke \(\varepsilon = \varepsilon(t)\) gewählt werden kann. Dies ist zu schwach, um garantieren zu können, dass eine konvergente Funktionenfolge wieder stetig ist. Wir benutzen nun die Maximumsmetrik (8). Daraus folgt, dass zu jedem \(\varepsilon > 0\) es ein \(n_0 = n_0(\varepsilon) \in \mathbb{N}\) mit

\[\max_{t\in\mathbb{R}} |x_n(t) - x(t)| < \varepsilon\quad \text{für alle}\ n \ge n_0\]

geben muss. Zu jedem \(\varepsilon > 0\) ist hier im Sinne von „beliebig klein“ zu verstehen. Der grosse Unterschied zur punktweisen Konvergenz ist, dass hier das \(\varepsilon\) für alle \(t\in\mathbb{R}\) das selbe ist. In diesem Sinne ist jedoch die Funktionenfolge \(x_n\) nicht mehr konvergent:

epsilon = 0.1

plt.plot(t,xn(t,1), label='$xn=1$')
plt.plot(t,xn(t,4), label='$xn=4$')
plt.plot(t,xn(t,8), label='$xn=8$')
plt.plot(t,x(t),'--', label='Grenzfunktion')
plt.fill_between(t,x(t)-epsilon,x(t)+epsilon,label=r'$\varepsilon$-Schranke',alpha=0.3)
plt.legend()
plt.show()
_images/GrundlegendeRaeume_11_0.png

Für ein \(\varepsilon < 1\) (Sprunghöhe) finden wir kein \(n_0\) so, dass der Abstand zur Grenzfunktion der Bedingung genügt. Die Funktionenfolge ist daher nicht konvergent bezüglich der Maximumsmetrik.

Definition: Gleichmässige Konvergenz

Die Konvergenz in \((C[a,b],d_{\max})\) nennt man gleichmässige Konvergenz auf dem Intervall \([a,b]\).

Bemerkung

Ist eine stetige Funktionenfolge gleichmässig konvergent, so ist die Grenzfunktion wiederum stetig.

Cauchy-Folge

Der Begriff der Cauchy-Folge folge kann direkt auf metrische Räume übertragen werden:

Definition: Cauchy-Folge

Eine Folge \(\|x_n\}\) aus dem metrischen Raum \(X\) heisst Cauchy-Folge, wenn

\[\lim_{m,n\to\infty} d(x_n,x_m) = 0\]

ist, dh. wenn es zu jedem \(\varepsilon > 0\) eine natürliche Zahl \(n_0 = n_0(\varepsilon)\in\mathbb{N}\) git mit

\[d(x_n,x_m) < \varepsilon\quad\text{für alle}\quad n,m \ge n_0.\]

Satz

Jede konvergente Folge im metrischen Raum \(X\) ist auch eine Cauchy-Folge.

Beweis: Aus der Konvergenz der Folge \(\{x_n\}\) folgt: Zu jedem \(\varepsilon>0\) gibt es ein \(n_0 = n_0(\varepsilon)\in\mathbb{N}\) und ein \(x_0\in X\) mit

\[d(x_n,x_0) < \varepsilon\quad\text{und}\quad d(x_m,x_0) < \varepsilon\]

für alle \(n,m \ge n_0\). Mit Hilfe der Dreiecksungleichung folgt

\[d(x_n,x_m) \le d(x_n,x_0) + d(x_0,x_m) = d(x_n,x_0) + d(x_m,x_0) < 2 \varepsilon\]

für alle \(n,m \ge n_0\). \(\Box\)

Die Umkehrung gilt im allgemeinen nicht.

Beispiel: Betrachte \(X = (0,1)\) mit der Metrik \(d(x,y) := |x-y|\) und der Folge \(\{x_n\}\) mit \(x_n = \frac{1}{1+n}\). Die Folge ist eine Cauchy-Folge im metrischen Raum \((X,d)\), besitzt jedoch keinen Grenzwert in diesem \((0\not\in X)\).

Das führt uns zu einem neuen Begriff, der Vollständigkeit. Wir interessieren uns insbesondere für diejenigen metrischen Räume, in denen Cauchy-Folgen konvergieren.

Definition: Vollständig

Ein metrischer Raum \(X\) heisst vollständig, wenn jede Cauchy-Folge in \(X\) gegen ein Element von \(X\) konvergiert.

Betrachten wir ein paar Beispiele:

  1. \(\mathbb{R}^n\) mit der euklidischen Metrik

    \[d(x,y) = \sqrt{\sum_{k=1}^n |x_k-y_k|^2}\]

    versehen, ist ein vollständiger metrischer Raum. Dies folgt aus dem Cauchyschen Konvergenzkriterium für Punktfolgen.

  2. \(C[a,b]\) mit der Maximumsmetrik

    \[d(x,y) = \max{a\le t\le b} |x(t)-y(t)|\]

    versehen ist vollständig.

Dagegen ist \(C[a,b]\) bezüglich der Integralmetrik

(9)\[d(x,y) = \left(\int_a^b |x(t)-y(t)|^p dt \right)^{1/p},\quad 1\le p < \infty\]

nicht vollständig. Wir betrachten dazu für \(p=2\) auf \(C[0,1]\) folgendes Gegenbeispiel:

Sei \(t\in[0,1]\)

(10)\[\begin{split}x_n(t) := \begin{cases} n^\alpha\quad\text{für}\ t \le 1/n\\ \frac{1}{t^\alpha}\quad\text{für}\ t > 1/n\end{cases}\end{split}\]

und \(x(t) = \frac{1}{t^\alpha}\) für \(0<\alpha<1/2\).

def xn(t,n,alpha):
    y = np.zeros_like(t)
    y[t<=1/n] = n**alpha
    y[t>1/n] = 1/(t[t>1/n]**alpha)
    return y
x = lambda t, alpha: 1/t**alpha
t = np.linspace(0,1,400)
plt.plot(t,xn(t,3,1/3), label='$n=3$')
plt.plot(t,xn(t,10,1/3), label='$n=10$')
plt.plot(t,xn(t,20,1/3), label='$n=20$')
plt.plot(t[1:],x(t[1:],1/3),'--', label='Grenzfunktion')
plt.title(r'$\alpha = 1/3$')
plt.legend()
plt.ylim(0,4)
plt.show()
_images/GrundlegendeRaeume_13_0.png

Es gilt \(x_n \in C[0,1]\) für alle \(n\in\mathbb{N}\) und

\[d(x_n,x)^2 = \int_0^1 |x_n(t)-x(t)|^2 dt = \int_0^{1/n} (n^\alpha - t^{-\alpha})^2 dt.\]

Mit Hilfe der Ungleichung \((a-b)^2 \le 2 (a^2+b^2)\) folgt

\[d(x_n,x)^2 \le 2 \int_0^{1/n} (n^{2\alpha} + t^{-2\alpha})^2 dt = \frac{2}{n^{1-2\alpha}} + \frac{2}{1-2\alpha} \frac{1}{n^{1-2\alpha}} \to 0 \quad \text{für}\ n\to\infty\]

da \(1-2\alpha > 0\) gilt. Mit dem konviergiert die Folge \(\{x_n\}\) gegen \(x\) in der Integralmetrik (\(p=2\)). Wir zeigen, dass \(\{x_n(t)\}\) keine auf \([0,1]\) stetige Grenzfunktion besitzt. Dazu nehmen wir an, dass \(y(t)\in C[0,1]\) sei Grenzfunktion der Folge \(\{x_n(t)\}\). Wir setzen

\[M = \max_{0\le t\le 1} |y(t)|.\]

(Muss für eine wohl definierte Obersumme endlich sein!) Für \(t \le (2M)^{-1/\alpha}\) und \(n > (2M)^{1/\alpha}\) gilt

\[x_n(t) - y(t) \ge M\quad \text{für}\quad t\le (2M)^{-1/\alpha}\]

und somit

\[d^2(x_n,y) = \int_0^1 |x_n(t)-y(t)|^2 dt \ge \int_0^{(2M)^{-1/\alpha}} |x_n(t)-y(t)|^2 dt \ge (2M)^{-1/\alpha}\cdot M^2 > 0, \quad \text{für}\quad n > (2M)^{1/\alpha}\]

im Widerspruch zur Annahme, dass \(\{x_n(t)\}\) gegen \(y(t)\) konvergiert. Damit ist die Behauptung bewiesen. \(\Box\)

Die Tatsache, daß \(C[a,b]\), versehen mit einer Integralmetrik, kein vollständiger metrischer Raum ist, bedeutet einen schwerwiegenden Mangel dieses Raumes. Jedoch gibt es mehrere Wege der Vervollständigung:

  1. Man erweitert die Klasse \(C[a,b]\) zur Klasse der auf \([a,b]\) Lebesgue-integrierbaren Funktionen und interpretiert das in (9) auftretende Integral im Lebesgueschen Sinn. Dadurch gelangt man zum vollständigen metrischen Raum \(L_p[a, b]\) (vgl. [Heu08], S. 109).

  2. Ein anderer Weg besteht darin, dass der vollständige Erweiterungsraum als Menge von linearen Funktionalen auf einem geeigneten Grundraum nach dem Vorbild der Distributionentheorie aufgefasst wird.

  3. Ein weiterer Weg besteht in der abstrakten Konstruktion eines vollständigen Erweiterungsraums mit Hilfe von Cauchy-Folgen. Auf diese Weise lässt sich jeder nichtvollständige metrische Raum vervollständigen (vgl. [Heu06], S. 251)

Wir definieren kompakt für metrische Räume wie folgt

Definition: Kompakt

Sein \(X\) ein metrischer Raum. \(A \subset X\) heisst kompakt, wenn jede Folge \(\{x_n\}\) aus \(A\) eine Teilfolge enthält, die gegen ein Grenzelement \(x\in A\) konvergiert.

Satz

Jede kompakte Teilmenge \(A\) eines metrischen Raumes \(X\) ist beschränkt und abgeschlossen.

Die Umkehrung gilt im allgemeinen nicht.

Bestapproximation in metrischen Räumen

In der Approximationstheorie stellt sich das Grundproblem: In einem metrischen Raum \(X\) sei eine Teilmenge \(A\) und ein fester Punkt \(y\in X\) vorgegeben. Zu bestimmen ist ein Punkt \(x_0 \in A\), der von \(y\) minimalen Abstand hat. Das Problem beginnt schon damit, dass es nicht klar, ist, dass es einen solchen Punkt überhaupt gibt:

Betrachte den Raum \((\mathbb{R}, d)\) mit \(d(x_1,x_2) = |x_1-x_2|\). Die Teilmenge \(A\) sei gegeben durch \(A = (0,1)\) und \(y=2\). In \(A\) gibt es keinen Punkt \(x_0\), für den \(d(x_0,2)\) minimal ist (\(1\not\in A\)).

Zur Erinnerung:

Definition: Supremum, Infimum

Sei \(A\subset \mathbb{R}\), dann bezeichnet man mit dem Supremum von \(A\) die kleinste reelle Zahl \(\lambda\) mit \(x\le \lambda\) für alle \(x\in A\). Analog bezeichnet man mit dem Infimum die grösste reelle Zahl \(\mu\) mit \(x\ge \mu\) für alle \(x\in A\).

Satz

Es sei \(X\) ein metrischer Raum und \(A\) eine kompakte Teilmenge von \(X\). Dann gibt es zu jedem festen Punkt \(y \in X\) einen Punkt \(x_0 \in A\), der von \(y\) kleinsten Abstand hat.

Betrachten wir das obige Beispiel angepasst auf die Voraussetzung im Satz: Sei \(A = [0,1] \subset \mathbb{R}\) ein kompaktes Intervall, dann ist der Punkt \(x_0 = 1\) bestapproximierendes Element.

_images/Bestapproximation.png

Abb. 2 Bestapproximation

Normierte Räume. Banachräume

Bis jetzt haben wir sehr wenig Eigenschaften eines Raumes benötigt. Was uns noch fehlt, sind abgesehen vom Abstand der Elemente noch algebraische Eigenschaften (addieren, multiplizieren, etc.). Dazu definieren wir den linearen Raum (oder Vektorraum) wie folgt.

Definition: linearer Raum

Ein linearer Raum (oder Vektorraum) über einem Körper \(\mathbb{K}\) besteht aus einer nichtleeren Menge \(X\), sowie

  • einer Vorschrift, die jedem Paar \((x,y)\) mit \(x,y \in X\) genau ein Element \(x+y\in X\) zuordnet (Addition)

  • einer Vorschrift, die jedem Paar \((\lambda,x)\) mit \(\lambda\in \mathbb{K}\) und \(x \in X\) genau ein element \(\lambda x\in X\) zuordnet (Multiplikation mit Skalaren), wobei für alle \(x,y,z \in X\) und \(\lambda, \mu\in\mathbb{K}\) folgende Regeln gelten:

\[\begin{split}\begin{array}{rcll} x + (y+z) & = & (x+y) + z & \quad\text{Assoziativgesetz} \\ x + y & = & y + x & \quad\text{Kommutativgesetz} \\ x + 0 & = & x & \quad\text{Nullelement} \\ x + x' & = & 0 & \quad\text{Negatives zu $x$}\\ (\lambda + \mu) x & = & \lambda x + \mu x & \quad\text{1. Distributivgesetz}\\ \lambda (x+y) & = & \lambda x + \mu x & \quad\text{2. Distributivgesetz}\\ (\lambda \mu) x & = & \lambda (\mu x) & \quad\text{Assoziativgesetz}\\ 1 x & = & x & \quad\text{mit $1\in\mathbb{K}$} \end{array}\end{split}\]

Beispiele für lineare Räume:

  • Die Mengen \(\mathbb{R}^n\), \mathbb{C}^n$ sind wohl bekannt.

  • Menge \(C[a,b]\) aller reellwertigen stetigen Funktionen:

    \[\begin{split}\begin{split} (x+y)(t) & = x(t) + y(t)\\ (\lambda x)(t) & = \lambda x(t)\\ 0(t) & = 0\\ (-x)(t) & = -x(t) \end{split}\end{split}\]

    mit \(t \in [a,b]\subset \mathbb{R}\), \(\lambda\in\mathbb{R}\).

  • \(C^k[a,b]\) Menge aller reellwertigen \(k\)-mal stetig differenzierbare Funktionen.

  • \(C^{\infty}[a,b]\) Menge aller beliebig oft stetig differenzierbare Funktionen.

  • Menge aller Polynome

  • Menge \(l_p\) aller Zahlenfolgen \(x = \{x_k\}\), für die \(\sum_{k=1}^{\infty} |x_k|^p < \infty\) konvergiert:

    \[\begin{split}\begin{split} x+y & = \{x_k\} + \{y_k\} = \{x_k + y_k\}\\ \lambda x & = \lambda \{x_k\} = \{\lambda x_k\},\quad \lambda\in\mathbb{R}\end{split}\end{split}\]

Wie in der linearen Algebra sind folgende Begriffe analog definiert

Definition: Unterraum, lineare Mannigfaltigkeit, lineare Hülle / Span, linear unabhängig, Dimension, Basis

  • Eine nicht leere Teilmenge \(S\) von \(X\) heisst Unterraum von \(X\), wenn für bel. \(x,y \in S\) und \(\lambda \in \mathbb{K}\) stets

    \[x+y \in S\quad\text{und}\quad \lambda x \in S\]

    folgt. Insbesondere ist \(S\) selbst ein linearer Raum über \(\mathbb{K}\).

  • Ist \(S\) ein Unterraum von \(X\) und \(x_0\in X\) beliebig, so nennt man

    \[M = x_0 + S := \{x_0+y\ |\ y\in S\}\]

    eine lineare Mannigfaltigkeit von \(X\).

  • Ist \(A\) eine beliebige nichtleere Teilmenge von \(X\), so bilden alle Linearkombinationen \(\sum_{k=1}^m \lambda_k x_k\) mit beliebigem \(m \in \mathbb{N}\), \(\lambda_k\in\mathbb{K}\), \(x_k \in A\) einen Unterraum \(S\subset X\). Er wird lineare Hülle von \(A\) oder \(\mathop{span} A := S\) genannt.

    Man sagt: \(A\) spannt \(S\) auf oder \(A\) ist ein Erzeugendensystem von \(S\). Im Falle \(S=X\) spannt \(A\) den ganzen Raum \(X\) auf.

  • Sind \(S\) und \(T\) Unterräume von \(X\), dann ist die Summe \(S+T\) definiert durch

    \[S+T := \mathop{span} S \cup T.\]
  • Die (endlich vielen) Elemente \(x_1, \ldots, x_n\in X\) heissen linear unabhängig, wenn aus

    \[\alpha_1 x_1 + \ldots + \alpha_n x_n = 0\quad\text{stets}\quad \alpha_1 = \ldots = \alpha_n = 0\]

    folgt.

  • Sei \(S\) ein Unterraum von \(X\). Wir sagen, \(S\) besitzt die Dimension \(n\), \(\mathop{dim} S = n\), wenn es \(n\) linear unabhängige Elemente von \(S\) gibt, aber \(n+1\) Elemente von \(S\) stets linear abhängig sind.

    \(S\) heisst Basis von \(X\), wenn die Elemente von \(S\) linear unabhängigsind und \(\mathop{span} S = X\) gilt.

    Besitzt \(X\) keine endlich dimensionale Basis, nennt man \(X\) unendlich-dimeansional (\(\mathop{dim} X = \infty\)).

Bemerkungen: Die oben erwähnten Funktionenräume \(C[a,b]\), \(C^k[a,b]\), Polynome sind unendlich-dimensional. Ebenso ist der Folgenraum \(l_p\) unendlich-dimensional:

Man betrachte

\[x^{(k)} = \{0, \ldots, 0, 1, 0, \ldots \}\in l_p\]

mit 1 an der Stelle \(k\).

Im folgenden sind wir an Räumen interessiert, für welche eine lineare Struktur und eine Metrik gegeben ist.

Definition: normierter Raum

Sei \(X\) ein metrischer und linearer Raum. Zu dem sei die Metrik \(d\) von \(X\) translationsinvariant

\[d(x+z, y+z) = d(x,y)\quad\forall\ x,y,z\in X\]

und homogen

\[d(\alpha x, \alpha y) = |\alpha| d(x,y)\quad \forall\ \alpha\in\mathbb{K}, x,y\in X.\]

Dann nennt man \(X\) einen normierten Raum. Der durch

\[\|x\| := d(x,0)\quad \forall\ x\in X\]

erklärte Ausdruck heisst Norm von \(x\).

Bemerkungen:

  • Neben der kurzen Schreibweise \(X\), verwendet man häufig auch die Bezeichnung \((X, \|\cdot\|)\). Der Punkt in \(\|\cdot\|\) ist als Platzhalter zu verstehen.

  • Führt man den normierten Raum \(X\) mit Hilfe einer Norm ein, so ist durch

    \[d(x,y) = \|x-y\|\quad\text{für alle}\ x,y\in X\]

    eine Metrik in \(X\) gegeben.

Folgerung

Ein normierter Raum \((X, \|\cdot\|)\) ist ein linearer Raum, auf dem eine Norm \(\|\cdot\|\) erklärt ist, die für alle \(x,y\in X\) und \(\alpha \in \mathbb{K}\)

\[\begin{split}\begin{split} \|x\| & \ge 0,\quad \|x\|=0\quad \text{genau dann, wenn $x=0$ ist},\\ \|\alpha x\| & = |\alpha| \|x\|\\ \|x + y\| & \le \|x\| + \|y\|\end{split}\end{split}\]

erfüllt.

Damit können wir einen wichtigen Begriff der Funktionalanalysis einführen, den Banachraum:

Definition: Banachraum

Vollständig normierte Räume \(X\) sind diejenigen, für die jede Cauchy-Folge in \(X\) gegen ein Element in \(X\) konvergiert.

Ein vollständiger normierter Raum heisst Banachraum.

Beispiele: Folgende Räume sind Banachräume

  • \(\mathbb{R}^n\) mit der Norm \(\|x\| = \sqrt{\sum_{k=1}^n |x_k|^2}\).

  • \(C[a,b]\) mit der Norm \(\|x\| := \max_{a\le t \le b} |x(t)|\).

  • \(C^k[a,b]\) mit der Norm \(\|x\| := \max_{a\le t \le b} |x(t)| + \max_{a\le t \le b} |x'(t)| + \ldots + \max_{a\le t \le b} |x^{(k)}(t)|.\)

  • \(l_p\ (1\le p < \infty)\) mit der Norm \(\|x\| = \left(\sum_{k=1}^{\infty} |x_k|^p \right)^{1/p}\)

Definition: abzählbare Basis

Man sagt, dass \(X\) eine abzählbare Basis \(\{x_k\}_{k=1}^{\infty}\) mit \(x_k \in X\) besitzt, falls jedes \(x\in X\) eindeutig in der Form \(x = \sum_{k=1}^{\infty} \alpha_k\,x_k\) darstellbar ist, wobei die Konvergenz bezüglich der Norm von \(X\) zu verstehen ist.

Lineare Räume können durchaus verschieden normiert werden. Als Beispiel betrachte dazu den Raum \(X=\mathbb{R}^n\) mit den Normen

\[\begin{split}\begin{split} \|x\|_1 & = \sum_{k=1}^n |x_k|\quad\text{(Betragsnorm)}\\ \|x\|_2 & = \sqrt{\sum_{k=1}^n |x_k|^2}\quad\text{(Euklidische Norm, Quadratnorm)}\\ \|x\|_{\infty} & = \max_{1\le k \le n} |x_k|\quad\text{(Maximumsnorm)}\end{split}\end{split}\]

Aufgabe

Stelle den Einheitskreis \(K_{*} = \{x\in\mathbb{R}^n\, \big|\, \|x\|_{*} = 1\}\) bezüglich den drei verschiedenen Normen \(*\) graphisch dar.

import numpy as np
from numpy.linalg import norm
import matplotlib.pyplot as plt

x,y = np.meshgrid(np.linspace(-1.2,1.2,81),np.linspace(-1.2,1.2,81))

z1 = np.abs(x)+np.abs(y)
z2 = np.sqrt(x**2+y**2)
zinf = np.max([np.abs(x),np.abs(y)],axis=0)

fig, (ax1, ax2, ax3)  = plt.subplots(1, 3)
ax1.contour(x,y,z1-1,0,colors='tab:blue')
ax2.contour(x,y,z2-1,0,colors='tab:orange')
ax3.contour(x,y,zinf-1,0,colors='tab:green')
for a,t in zip((ax1, ax2, ax3),('$K_1$','$K_2$','$K_\infty$')):
    a.set_aspect(1)
    a.grid()
    a.set_title(t)
plt.tight_layout()
plt.show()
_images/GrundlegendeRaeume_15_0.png

Die drei verschiedenen Normen führen zur Frage, wie die Normen zusammenhängen.

Defintion: äquivalente Normen

Zwei Normen \(\|\cdot\|_a\) und \(\|\cdot\|_b\) heissen äquivalent, wenn jede bezüglich der Norm \(\|\cdot\|_a\) konvergente Folge auch bezüglich der Norm \(\|\cdot\|_b\) konvergent ist und umgekehrt.

Im endlich dimensionalen gilt ein pauschaler Satz:

Satz

Alle Normen in einem endlich-dimensionalen Raum \(X\) sind äquivalent.

Dieses Resultat gilt für unendlich-dimensionale Räume nicht. Als Beispiel sei der lineare Raum \(C[a,b]\) mit der Maximumsnorm und der Quadratnorm erwähnt. Die beiden Normen sind nicht äquivalent, vgl. das Gegenbeispiel (10).

Mit diesem Satz folgt

Satz

Jeder endlich-dimensionale normierte Raum \(X\) ist vollständig, also ein Banachraum.

Skalarprodukträume. Hilberträume

Das aus der linearen Algebra bekannte Skalarprodukt lässt sich auch auf unendlich-dimensionale Räume übertragen. Wir definieren ganz allgemein

Definition: Skalarprodukt, Skalarproduktraum

Unter einem Skalarproduktraum versteht man einen linearen Raum \(X\) über \(\mathbb{K}\), in dem ein Skalarprodukt \((x,y)\) mit folgenden Eigenschaften definiert ist: Für beliebige \(x,y,z \in X\) und \(\alpha\in\mathbb{K}\) ist

\[(\cdot, \cdot) : X \times X \to \mathbb{K}\]

und es gilt

(11)\[\begin{split}\begin{split} (x,x) & \ge 0, \quad (x,x) = 0\ \Leftrightarrow\ x=0\\ (x,y) & = \overline{(y,x)}\\ (\alpha x, y) & = \alpha (x,y)\\ (x+y,z) & = (x,z) + (y,z). \end{split}\end{split}\]

Beispielsweise lässt sich auf \(X=C[a,b]\) Menge der reellwertigen stetigen Funktionen auf dem Intervall \([a,b]\) durch

(12)\[(x,y) := \int_a^b x(t)\,y(t) dt\quad x,y \in X\]

ein Skalarprodukt definieren.

Aufgabe

Weise die Eigenschaften (11) für das Skalarprodukt (12) nach.

Satz

Es sei \(X\) ein Skalarproduktraum. Für beliebige \(x,y,z\in X\) und \(\alpha \in \mathbb{K}\) gilt

\[\begin{split}\begin{split}(x, \alpha y) & = \overline{\alpha} (x,y)\\ (x, y+z) & = (x,y) + (x,z)\end{split}\end{split}\]

Beweis: selber durchführen.

Satz: induzierte Norm

In jedem Skalarproduktraum \(X\) lässt sich durch

\[\|x\| := \sqrt{(x,x)}\]

eine Norm definieren. Man bezeichnet sie als die durch das Skalarprodukt \((x,y)\) induzierte Norm.

Der Beweis lässt sich einfach mit Hilfe der Schwarz’schen Ungleichung durchführen.

Satz: Schwarzsche Ungleichung

Es sei \(X\) ein Skalarproduktraum. Dann gilt für alle \(x,y\in X\)

\[|(x,y)| \le \|x\|\,\|y\|.\]

Die Beweise sind dem Leser überlassen (vgl. [BWHM10] S. 43, 44).

Satz

Sei \(X\) ein Skalarproduktraum. Ferner seien \(\{x_n\}\) und \(\{y_n\}\) Folgen aus \(X\) mit \(x_n \to x\) und \(y_n \to y\) für \(n\to\infty\), wobei die Konvergenz im Sinne der induzierten Norm zu verstehen ist. Dann gilt

\[(x_n, y_n) \to (x,y)\quad\text{für}\quad n\to\infty,\]

dh. das Skalarprodukt ist eine stetige Funktion bezüglich der Normkonvergenz.

Definition: Hilbertraum

Ein Skalarproduktraum \(X\), der bezüglich der durch das Skalarprodukt induzierten Norm

\[\|x\| = \sqrt{(x,x)}\quad\text{für}\ x\in X\]

vollständig ist, heisst Hilbertraum.

Beispiele:

  • \(\mathbb{R}^n\) bzw. \(\mathbb{C}^n\) sind mit den Skalarprodukte

    \[(x,y) = \sum_{k=1}^n x_k y_k\quad\text{bzw.}\quad (x,y) = \sum_{k=1}^n x_k \overline{y_k}\]

    Hilberträume.

  • \(l_2\) ist mit dem Skalarprodukt

    \[(x,y) = \sum_{k=1}^\infty x_k \overline{y_k}\]

    ein Hilbertraum.

  • \(C[a,b]\) ist bezüglich der Quadratnorm

    \[\|x\|_2 = \sqrt{(x,x)} = \left(\int_a^b |x(t)|^2 dt\right)^{1/2}\]

    kein Hilbertraum, da \((C[a,b], \|\cdot\|_2)\) nicht vollständig ist. Der Raum \(L_2[a,b]\) erweist sich als Vervollständigung dieses Raumes, welcher jedoch eine Verallgemeinerung des Riemannschen Integralbegriffs (dem Lebesgues Mass) erfordert.

Viele Eigenschaften des euklischen Raumes \(\mathbb{R}^n\), die mit dem Skalarprodukt zusammenhängen, können auf einen beliebigen Hilbertraum übertragen werden. Der Begriff der Ortohogonalität ist dabei sehr zentral.

Definition: orthogonal

Es sei \(X\) ein Hilbertraum.

  • Zwei Elemente \(x,y \in X\) heissen orthogonal (\(x\perp y\)), wenn

    \[(x,y) = 0\]

    gilt.

  • Zwei Teilmengen \(A,B \subset X\) heissen orthogonal (\(A\perp B\)), wenn

    \[(x,y) = 0 \quad \forall\ x\in A, y\in B\]

    gilt.

  • Sei \(M\subset X\), dann heisst

    \[M^\perp := \{y\in X | (x,y)=0\quad\forall\,x\in M\}\]

    Orthogonalraum von \(M\).

  • Sei \(X'\) ein abgeschlossener Unterraum von \(X\). \(X''\) wird orthogonales Komplement von \(X'\) genannt, wenn

    \[X''\perp X' \quad \text{und}\quad X' \oplus X'' = X\]

    gilt. Mit \(\oplus\) ist die direkte Summe bezeichnet.

Es gilt

Satz: Pythagoras

Es sei \(X\) ein Hilbertraum und seien \(x,y \in X\) mit \(x\perp y\). Dann gilt

\[\|x+y\|^2 = \|x\|^2 + \|y\|^2.\]

Beweis: Einfaches Nachrechnen.

Satz

Es sei \(X\) ein Hilbertraum und \(M\) eine beliebige Teilmenge von \(X\). Dann ist der Orthogonalraum \(M^\perp\) von \(M\) ein abgeschlossener Unterraum von \(X\).

Für den Beweis sei auf [BWHM10] S. 50 verwiesen.

Wir kommen nun auf das Approximationsproblem aus Bestapproximation in metrischen Räumen zurück und können die Struktureigenschaften des Hilbertraumes nutzen:

Satz

Es sei \(X'\) ein abgeschlossener Unterraum von \(X\) und \(x\in X\) beliebig.

  • Dann existiert genau ein \(x_0 \in X'\) mit

    \[\|x-x_0\| = \min_{x'\in X'} \|x-x'\|,\]

    dh. zu jedem \(x\in X\) gibt es genau ein bestapproximierendes Element bezüglich \(X'\).

  • Es gilt \(x_0\in X\) ist genau dann bestapproximierend an \(x\in X\), wenn

    \[(x-x_0,y) = 0\quad \forall y\in X'\]

    gilt.

Für den Fall, dass \(X'\) endlich-dimensional ist, lässt sich das bestapproximierende Element konstruieren. Es gilt

Satz

Sei \(X'\subset X\) mit \(\dim X' < \infty\) ein Unterraum des Hilbertraumes \(X\) und sei \(x_1, \ldots, x_n\) eine Basis von \(X'\). Dann lässt sich das eindeutig bestimmte bestapproximierende Element \(x_0\in X'\) an \(x\in X\) in der Form

\[x_0 = \sum_{k=1}^n \lambda_k x_k\]

darstellen, wobei die Koeffizienten \(\lambda_1, \ldots, \lambda_n\) durch das lineare Gleichungssystem

(13)\[(x-x_0,x_i) = (x,x_i) - \sum_{k=1}^n \lambda_k (x_k,x_i) = 0 \quad i = 1, \ldots, n\]

gegeben sind.

Bemerkung: Bildet \(x_k\), \(k=1,\ldots, n\) ein Orthonormalsystem

\[\begin{split}(x_i,x_k) = \delta_{i k} = \begin{cases} 0\quad \text{für}\ i\not= k\\ 1\quad \text{für}\ i = k\end{cases},\end{split}\]

so folgt aus (13) sofort

\[\lambda_i = (x,x_i)\quad i = 1, \ldots,n.\]

Die Koeffzienten \(\lambda_i\) nennt man auch Fourierkoeffizienten!

Wir werden zeigen, dass sich mit Hilfe des Schmidtschen Orthogonalisierungsverfahrens aus \(n\) linear unabhängigen Elementen stets ein Orthogonalsystem konstruieren lässt.

Definition: Orthonormalsystem (ONS)

Es sei \(X\) ein Hilbertraum. Man nennt die Folge \(\{x_k\}_{k\in\mathbb{N}}\) ein (abzählbares) Orthonormalsystem (kurz ONS) von \(X\), wenn

\[\begin{split}(x_j, x_k) = \delta_{i k} = \begin{cases} 0\quad \text{für}\ i\not= k\\ 1\quad \text{für}\ i = k\end{cases}\quad \text{für alle}\ j,k\in\mathbb{N}\end{split}\]

erfüllt ist.

Beispiele

  • Im \(l_2\) bilden die Folgen \(\{1,0,0,\ldots\}\), \(\{0,1,0,\ldots\},\ldots \) ein ONS.

  • Für den (nicht vollständigen) reellen Skalarproduktraum \(C[0,2\pi]\) bilden die trigonometrischen Funktionen

\[\frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos t, \frac{1}{\sqrt{\pi}} \sin t, \frac{1}{\sqrt{\pi}} \cos 2t, \frac{1}{\sqrt{\pi}} \sin 2t, \ldots \]

ein ONS.

  • Weitere Beispiele sind Hermitesche und Legendresche Polynome.

Es gilt ganz allgemein:

Satz: Orthogonalisierungsverfahren nach Erhard Schmidt

Gegeben sei eine abzählbare (nicht zwingend endliche) linear unabhängige Folge \(\{y_k\} \subset X\) aus dem Hilbertraum \(X\). Dann gibt es ein ONS aus \(n\) bzw. abzählbar unendlich viele Elementen \(\{x_k\}\) so, dass der von der Folge \(\{y_k\}\) aufgespannte (abgeschlossene) Unterraum mit dem der Folge \(\{x_k\}\) aufgespannten (abgeschlossene) Unterraum übereinstimmt.

Der Beweis beruht auf der Konstruktion: sei

\[x_1 = \frac{y_1}{\|y_1\|}\]

so ist \(\mathop{span}\{y_1\} = \mathop{span}\{x_1\}\). Wir nehmen nun an, es seien bereits \(k\) orthonormierte Elemente \(x_1, \ldots, x_k\) mit \(\mathop{span}\{y_1, \ldots, y_k\} = \mathop{span}\{x_1,\ldots, x_k\}\) konstruiert. Dann setze

\[z_{k+1} = y_{k+1} - \sum_{j=1}^k (y_{k+1},x_j) x_j.\]

In dem Fall gilt \((z_{k+1},x_i) = 0\) für alle \(i = 1, \ldots, k\). Mit

\[x_{k+1} = \frac{z_{k+1}}{\|z_{k+1}\|}\]

folgt \(\mathop{span}\{y_1, \ldots, y_{k+1}\} = \mathop{span}\{x_1,\ldots, x_{k+1}\}\).

Bemerkung: Das Verfahren wird auch in der Numerik angewandt.

Die Elemente eines Hilbertraumes können mit Hilfe eines vollständigen Orthogonalsystems dargestellt werden. Dies gelingt mit Hilfe der verallgemeinerten Fourierreihen:

Satz: Fourierentwicklung

Sei \(X\) ein Hilbertraum mit einem vollständigen ONS \(\{x_k\}_{k\in\mathbb{N}}\).

  • Dann lässt sich jedes \(x\in X\) in der Summenform

    \[x = \sum_{k=1}^\infty a_k\,x_k\quad\text{Fourierentwicklung von $x$}\]

    mit eindeutig bestimmten Koeffizienten

    \[a_k = (x,x_k)\in\mathbb{K}\]

    darstellen und die Reihe \(\sum_{k=1}^\infty |a_k|^2\) ist konvergent.

  • Umgekehrt gibt es zu jeder Zahlenfolge \(\{a_k\}_{k\in\mathbb{N}}\) in \(\mathbb{K}\), für die \(\sum_{k=1}^\infty |a_k|^2\) konvergiert, genau ein \(x\in X\) mit \(x=\sum_{k=1}^\infty a_k x_k\).

Bemerkung: Aufgrund der Darstellung \(x = \sum_{k=1}^\infty a_k\,x_k\) nennt man ein vollständiges ONS auch eine Hilbertraumbasis.

Satz: Struktur von Hilberträumen

Es sei \(X\) ein Hilbertraum und \(\{x_k\}_{k\in\mathbb{N}}\) ein (abzählbares) ONS in \(X\). Dann sind die folgenden Aussagen äquivalent:

  • \(X = \overline{\underset{k\in\mathbb{N}}{\bigoplus} \mathop{span}(x_k)}\).

  • Das ONS \(\{x_k\}_{k\in\mathbb{N}}\) ist abgeschlossen.

  • Für alle \(x\in X\) gilt die Parsevalsche Gleichung

    \[\sum_{k=1}^\infty |(x,x_k)|^2 = \|x\|^2\quad\text{(Vollständigkeitsrelation)}\]
  • Jedes Element \(x\in X\) besitzt die Fourierentwicklung

    \[x = \sum_{k=1}^\infty (x,x_k)\,x_k.\]

Beispiel Orthogonalisierungsverfahren

nach Erhard Schmidt

import numpy as np
from sympy import symbols, integrate, lambdify
import matplotlib.pyplot as plt

Der Raum der quadratisch integrierbaren (nach Lebesgues) Funktionen \(L_2[-1,1]\) ist mit dem Skalarprodukt

\[(x,y) = \int_{-1}^{1} x(t) y(t) dt\]

und der induzierten Norm

\[\|x\|_2 = \sqrt{(x,x)}\]

ein Hilbertraum. Wir definieren daher das Skalarprodukt (dot-product) und die norm wie folgt:

t = symbols('t')
def dot(x,y):
    return integrate(x*y,(t,-1,1))
def norm(x):
    return dot(x,x)**(1/2)

Wir betrachten die Folge \(\{t^n\}_{n\in\mathbb{N}}\subset L^2[-1,1]\) von Monomen:

yi = [t**i for i in range(5)]
print(yi)
[1, t, t**2, t**3, t**4]

Die Monome sind nicht orthogonal, jedoch linear unabhängig. Falls dem so wäre müsste die Einheitsmatrix entstehen:

m = [[dot(yi[i],yi[j]) for j in range(5)] for i in range(5)]
m
[[2, 0, 2/3, 0, 2/5],
 [0, 2/3, 0, 2/5, 0],
 [2/3, 0, 2/5, 0, 2/7],
 [0, 2/5, 0, 2/7, 0],
 [2/5, 0, 2/7, 0, 2/9]]

Wir berechnen nun ein orthonormales System, basierend auf den Monomen nach dem Verfahren von Schmidt:

xi = [yi[0]/norm(yi[0])]
for i in range(1,5):
    s = 0
    for j in range(i):
        s += dot(yi[i],xi[j])*xi[j]
    zi=yi[i]-s
    xi.append(zi/norm(zi))

Das Orthonormalsystem ist damit gegeben durch:

xi
[0.707106781186547,
 1.22474487139159*t,
 2.37170824512628*t**2 - 0.790569415042095,
 4.67707173346743*t**3 - 2.80624304008046*t,
 9.2807765030735*t**4 - 7.95495128834872*t**2 + 0.795495128834872]

Test des Orthonormalsystems ergibt die Einheitsmatrix:

m = [[dot(xi[i],xi[j]) for j in range(5)] for i in range(5)]
np.round(np.array(m,dtype=float),8)
array([[ 1.,  0.,  0.,  0., -0.],
       [ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [-0.,  0.,  0.,  0.,  1.]])
tp = np.linspace(-1,1,400)
n = 0
plt.plot(tp,np.ones_like(tp),label='$P_'+str(n)+'(t)$')
for xii in xi[1:]:
    n += 1
    f = lambdify(t,xii,'numpy')
    plt.plot(tp, f(tp),label='$P_'+str(n)+'(t)$')
plt.grid()
plt.legend()
plt.show()
_images/BeispielOrthogonalisierungSchmidt_14_0.png

Das Resultat sind bezüglich der \(L_2\)-Norm normierte Legendre’sche Polynome. Üblicher weise werden die Polynome mit \(P_n(1) = 1\) normiert:

tp = np.linspace(-1,1,400)
n = 0
plt.plot(tp,np.ones_like(tp),label='$P_'+str(n)+'(t)$')
for xii in xi[1:]:
    n += 1
    f = lambdify(t,xii,'numpy')
    plt.plot(tp, f(tp)/f(1),label='$P_'+str(n)+'(t)$')
plt.grid()
plt.legend()
plt.show()
_images/BeispielOrthogonalisierungSchmidt_16_0.png

Die ersten fünf Legendre’sche Polynome sind gegeben durch:

lp = [xii/xii.subs(t,1) for xii in xi]
print(lp)
[1.00000000000000, 1.0*t, 1.5*t**2 - 0.5, 2.5*t**3 - 1.5*t, 4.375*t**4 - 3.75*t**2 + 0.375]

Beispiel zur Fourierentwicklung

import numpy as np
from sympy import symbols, integrate, lambdify, exp, sin, cos, pi
import scipy.integrate as scint
import matplotlib.pyplot as plt

Für das Beispiel benutzen wir zwei verschiedene orthonormale Basen für den \(L_2[-1,1]\)

t = symbols('t')

def dot(x,y):
    return integrate(x*y,(t,-1,1))
def norm(x):
    return dot(x,x)**(1/2)
def dotN(x,y):
    xy = lambdify(t, x*y,'numpy')
    return scint.quad(xy, -1, 1)[0]
def normN(x):
    return dotN(x,x)**(1/2)

Legendre’sche Polynome

# Orthonormalbasis nach Schmidt
N = 9
yi = [t**i for i in range(N)]
xi = [yi[0]/norm(yi[0])]
for i in range(1,N):
    s = 0
    for j in range(i):
        s += dot(yi[i],xi[j])*xi[j]
    zi=yi[i]-s
    xi.append(zi/norm(zi))
xi
[0.707106781186547,
 1.22474487139159*t,
 2.37170824512628*t**2 - 0.790569415042095,
 4.67707173346743*t**3 - 2.80624304008046*t,
 9.2807765030735*t**4 - 7.95495128834872*t**2 + 0.795495128834872,
 18.4685120543048*t**5 - 20.5205689492276*t**3 + 4.39726477483448*t,
 36.8085471137468*t**6 - 50.1934733369281*t**4 + 16.7311577789763*t**2 - 0.796721798998898,
 73.4290553655431*t**7 - 118.616166359723*t**5 + 53.9164392544196*t**3 - 5.99071547271328*t,
 146.570997825634*t**8 - 273.599195941123*t**6 + 157.845689965986*t**4 - 28.6992163574405*t**2 + 0.797200454372895]
f = exp(-5*t**2)
fn = lambdify(t, f, 'numpy')
tp = np.linspace(-1,1,400)
plt.plot(tp, fn(tp))
plt.grid()
plt.show()
_images/BeispielFourierEntwicklung_8_0.png
alpha = [dotN(f, xii) for xii in xi]
alpha
[0.5596217150491691,
 0.0,
 -0.4411693576778274,
 0.0,
 0.2148123794839546,
 0.0,
 -0.07762200243541717,
 0.0,
 0.0221421344164393]
s = 0
for alphai, xii in zip(alpha,xi):
    s += alphai*xii
sn = lambdify(t, s, 'numpy')
s
\[\displaystyle 3.24539473540683 t^{8} - 8.91522330646548 t^{6} + 9.38478407796753 t^{4} - 4.68931489413068 t^{2} + 0.994864373177097\]
tp = np.linspace(-1,1,400)
plt.plot(tp, fn(tp),label='f(t)') 
plt.plot(tp, sn(tp),label='Legendre Basis')
plt.legend()
plt.grid()
plt.show()
_images/BeispielFourierEntwicklung_11_0.png

Parsevallsche Gleichung (Vollständigkeitsrelation):

\[\sum_{k=1}^N |(x,x_k)|^2 \le \sum_{k=1}^\infty |(x,x_k)|^2 = \|x\|^2\]
np.sum(np.array(alpha)**2)-normN(f)**2
-2.810714668699532e-05

Trigonometrische Funktionen

# Orthonormalbasis nach Schmidt
yi = []
N = 5
yi.append(1/2)
for i in range(1,N):
    yi.append(cos(pi*i*t))
    yi.append(sin(pi*i*t))
print('Anzahl Basisfunktionen: '+str(len(yi)))
xi = [yi[0]/normN(yi[0])]
for i in range(1,2*N-1):
    s = 0
    for j in range(i):
        s += dotN(yi[i],xi[j])*xi[j]
    zi=yi[i]-s
    xi.append(zi/normN(zi))
Anzahl Basisfunktionen: 9
xi
[0.7071067811865475,
 1.0*cos(pi*t) - 9.81307786677359e-17,
 1.0*sin(pi*t),
 -1.22011185168313e-17*cos(pi*t) + 1.0*cos(2*pi*t) + 1.03037317601123e-16,
 -9.90337261694782e-18*sin(pi*t) + 1.0*sin(2*pi*t),
 1.23822596516741e-33*cos(pi*t) - 1.01484627287186e-16*cos(2*pi*t) + 1.0*cos(3*pi*t) - 1.58362563377161e-17,
 2.04850984122971e-34*sin(pi*t) - 2.0684971882448e-17*sin(2*pi*t) + 1.0*sin(3*pi*t),
 -4.42531299261824e-17*cos(pi*t) + 1.31330734865152e-16*cos(2*pi*t) + 8.86382073502645e-17*cos(3*pi*t) + 1.0*cos(4*pi*t) - 3.92523114670944e-17,
 7.95881701368516e-17*sin(pi*t) - 1.53007052862912e-17*sin(2*pi*t) - 6.41357085318366e-17*sin(3*pi*t) + 1.0*sin(4*pi*t)]
alpha2 = [dotN(f, xii) for xii in xi]
alpha2
[0.5596217150491691,
 0.4850805845912827,
 0.0,
 0.10914699708164807,
 0.0,
 0.010077740674845966,
 0.0,
 -0.00025517128989830523,
 0.0]
s2 = 0
for alphai, xii in zip(alpha2,xi):
    s2 += alphai*xii
s2n = lambdify(t, s2, 'numpy')
s2
\[\displaystyle 0.485080584591283 \cos{\left(\pi t \right)} + 0.109146997081648 \cos{\left(2 \pi t \right)} + 0.010077740674846 \cos{\left(3 \pi t \right)} - 0.000255171289898305 \cos{\left(4 \pi t \right)} + 0.395712309610513\]
tp = np.linspace(-1,1,400)
plt.plot(tp, fn(tp),label='f(t)') 
plt.plot(tp, sn(tp),label='Legendre Basis')
plt.plot(tp, s2n(tp),label='trigonometrische Basis')
plt.legend()
plt.grid()
plt.show()
_images/BeispielFourierEntwicklung_19_0.png

Parsevallsche Gleichung (Vollständigkeitsrelation):

\[\sum_{k=1}^N |(x,x_k)|^2 \le \sum_{k=1}^\infty |(x,x_k)|^2 = \|x\|^2\]
np.sum(np.array(alpha2)**2)-normN(f)**2
-4.505698535384184e-07

Vergleich

plt.plot(tp, sn(tp)-fn(tp),label='Legendre Basis')
plt.plot(tp, s2n(tp)-fn(tp),label='trigonometrische Basis')
plt.legend()
plt.grid()
plt.show()
_images/BeispielFourierEntwicklung_23_0.png

Lineare Operatoren

Viele Aufgaben in der Mathematik und den Anwendungen führen auf Gleichungen der Form

\[T(x) = T x = y,\]

wobei \(T: X \to Y\) eine „lineare Abbildung“, \(X, Y\) normierte Räume sind und \(y\in Y\) ein gegeben ist.

Definition: lineare Abbildung

Die Abbildung \(T\) des normierten Raumes \(X\) in den normierten Raum \(Y\) heisst linear, wenn für alle \(x,y \in X\) und alle \(\alpha \in \mathbb{K}\)

\[T(x+y) = T x + T y\]

Beschränkte lineare Operatoren

Analog zum Stetigkeitsbegriff aus der Analysis definiert man die Stetigkeit und Beschränktheit bei linearen Operatoren wie folgt:

Definition: stetig

Sei \(T: X\to Y\) ein linearer Operator und \(X, Y\) normierte Räume. Der lineare Operator \(T\) heisst stetig in \(x_0\in X\), wenn es zu jedem \(\varepsilon > 0\) ein \(\delta = \delta(\epsilon, x_0)>0\) gibt, so dass

\[\| T x- T x_0\|_Y < \varepsilon\quad\text{für alle}\ x\in X \quad\text{mit}\ \|x-x_0\|_X < \delta\]

gilt. Man nennt \(T\) stetig in \(X\), wenn \(T\) in jedem Punkt von \(X\) stetig ist.

Definition: beschränkt

Es seien \(X, Y\) normierte Räume. Der lineare Operator \(T: X \to Y\) heisst beschränkt, wenn es eine Konstante \(C>0\) mit

(14)\[\|T x\|_Y \le C\, \|x\|_X\quad\forall\,x\in X\]

gibt.

Die Menge aller linearen Abbildungen mit der sogenannten Operatornorm versehen, liefert uns wieder einen normierten Vektorraum. Die Operatornorm (vgl. Matrixnorm aus der Numerik oder linearen Algebra) ist gegeben durch

Definition: Operatornorm

Die kleinste Zahl \(C>0\) für die (14) gilt, heisst Operatornorm von \(T\) und ist durch

(15)\[\begin{split}\|T\|_{X\to Y} := \sup_{\substack{x\in X\\x\not= 0}} \frac{\|T x\|_Y}{\|x\|_X}\end{split}\]

definiert.

Bemerkung: Mit der Norm von \(T\) lässt sich die Ungleichung (14) auch in der Form

\[\|T x\|_Y \le \|T\|_{X\to Y}\ \|x\|_X\]

schreiben. Die Operatornorm lässt sich anstelle der Schreibweise (15) auch durch

\[\begin{split}\|T\|_{X\to Y} = \sup_{\substack{x\in X\\x\not= 0}} \frac{\|T x\|_Y}{\|x\|_X} = \sup_{\|x\|_X \le 1} \|T x\|_Y\end{split}\]

schreiben.

Zwischen stetigen und beschränkten Operatoren besteht der Zusammenhang

Satz

Sei \(T: X\to Y\) ein linearer Operator und \(X,Y\) normierte Räume. Dann gilt

\[T\ \text{ist beschränkt} \quad\Leftrightarrow \quad T\ \text{ist stetig.}\]

Beweis: a) Sei \(T\) beschränkt durch \(C>0\) und \(x_0\in X\) beliebig. Wir zeigen nun, dass es zu jedem \(\varepsilon>0\) ein \(\delta=\delta(x_0)\) gibt, so dass

\[\| T x - T x_0\|_Y < \epsilon\quad \forall \|x -x_0\|_X < \delta.\]

Wähle \(\delta = \frac{\epsilon}{C}\), dann folgt

\[\| T x - T x_0\|_Y = \|T (x-x_0)\|_Y \le C \underbrace{\|x-x_0\|_X}_{< \delta} < C \frac{\varepsilon}{C} = \varepsilon\]

dh. \(T\) ist in \(x_0\) stetig und da \(x_0\in X\) beliebig ist, in ganz \(X\).

b) Sei nun \(T\) auf \(X\) stetig. Wir zeigen im Widerspruch, dass \(T\) beschränkt ist. Daher nehmen wir an: \(T\) sei nicht beschränkt. Also gibt es eine Folge \(\{x_k\} \subset X\) mit \(x_k \not=0\) und \(\frac{\|T x_k\|_Y}{\|x_k\|_X} > k\) für alle \(k\in \mathbb{N}\). Setze nun \(y_k = \frac{x_k}{k \|x_k\|_X}\), so folgt \(y_k\in X\) und

(16)\[\|T y_k\|_Y = \left\| T\left(\frac{x_k}{k \|x_k\|_X}\right)\right\|_Y = \frac{\|T x_k\|_Y}{k \|x_k\|_X} > 1\]

für alle \(k\in \mathbb{N}\). Andererseits gilt: \(\|y_k\|_X = \frac{1}{k} \to 0\) für \(k\to \infty\) bzw. \(y_k \to 0\). Aus der Stetigkeit von \(T\) in \(0\) folgt \(T y_k \to 0\) für \(k\to\infty\), was im Widerspruch zu (16) steht. \(\Box\)

Bei linearen Operatoren sind Stetigkeit und Beschränktheit äquivalente Eigenschaften.

Beispiel: Sei \(X=Y=C[a,b]\), \(f\in C[a,b]\) und \(\|f\| = \max_{a\le x \le b} |f(x)|\). Betrachte den Integraloperator \(T\) mit

\[(T f)(x) := \int_a^b K(x,y) f(y) dy,\quad x\in [a,b]\]

mit \(K: [a,b] \times [a,b] \to \mathbb{R}\) stetigem Kern.

  • \(T\) ist ein linearer Operator, der \(C[a,b]\) auf sich abbildet.

  • Da \(f\) stetig auf \([a,b]\) ist, ist \(f\cdot K\) stetig auf \([a,b]\times [a,b]\) und damit ist auch (vgl. Satz 7.17 in [BWHM17])

    \[F(x) := \int_a^b K(x,y) f(y) dy\]

    stetig auf \([a,b]\).

  • Da \(K\) stetig auf \([a,b] \times [a,b]\) ist, existiert

    \[M = \max_{x,y \in [a,b]} |K(x,y)|\]

    und somit

    \[\|T f|| = \max_{x\in[a,b]} |(T f)(x)| \le \max_{x\in[a,b]} \int_a^b |K(x,y)| |f(y)| dy \le M\,\max_{x\in[a,b]} |f(x)|\ \int_a^b 1 dy = M\,(b-a)\,\|f\|.\]

    Damit ist \(T\) bezüglich der Maximumsnorm beschränkt. Es gilt

    \[\|T\| = \sup_{\|f\|=1} \|T f\| \le M\, (b-a).\]

Satz

Seien \(X, Y\) normierte Räume und mit \(L(X,Y)\) die Menge aller beschränkten linearen Operatoren von \(X\) in \(Y\) bezeichnet. Dann ist \(L(X,Y)\) bezüglich der Operatornorm

\[\begin{split}\|T\| = \sup_{\substack{x\in X\\x\not= 0}} \frac{\|T x\|_Y}{\|x\|_X}\end{split}\]

wieder ein normierter Raum.

Ist \(X\) ein normierter Raum und \(Y\) ein Banachraum, dann ist \(L(X,Y)\) ein Banachraum.

Lineare Funktionale

Wir betrachten nun spezielle lineare Operatoren, welche in den zugrunde liegenden Zahlenkörper abbilden.

Definition: lineares Funktional

Sei \(X\) ein normierter Raum. Dann nennt man den Operator \(F: X \to \mathbb{K}\) (\(\mathbb{R}\) oder \(\mathbb{C}\)) lineares Funktional.

Normiert man \(\mathbb{K}\) mit

\[\|\alpha\| := |\alpha|,\quad\alpha\in\mathbb{K}\]

so ist \(\mathbb{K}\) ein Banachraum und damit die Menge aller beschränkten linearen Funktionale auf \(X\) ein Banachraum. Dieser Raum ist insbesondere im Zusammenhang mit partiellen Differentialgleichungen sehr wichtig.

Dualraum von \(X\)

Der Banachraumm \(L(X,\mathbb{K})\) aller beschränkten linearen Funktionale auf \(X\) heisst der zu \(X\) konjugierte oder duale Raum und wird mit \(X^*\) oder \(X'\) bezeichnet.

Beispiel: Sei \(X\) ein Hilbertraum und \(y_0\) ein beliebiges (festes) Element aus \(X\). Für \(x\in X\) wird durch

\[\begin{split}\begin{split} F : X & \to \mathbb{R}\\ x & \mapsto y = F x := (x,y_0)\end{split}\end{split}\]

ein lineares Funktional \(F\) definiert. (Die Linearität folgt direkt aus den Eigenschaften des Skalarprodukts.) Mit Hilfe der Schwarzschen Ungleichung folgt

\[\|F x\| = |F x| = |(x,y_0)| \le \|x\|\,\|y_0\|\quad\forall\ x\in X.\]

Damit folgt

\[\frac{\|F x\|}{\|x\|} \le \|y_0\|\quad \forall x\in X,\]

sprich \(F\) ist ein beschränktes lineares Funktional, \(F\in X^*\) mit \(\|F\| \le \|y_0\|\). Da für \(x=y_0\)

\[\|F y_0\| = |(y_0,y_0)| = \|y_0\|^2 = \|y_0\|\, \|y_0\|\]

gilt, folgt

\[\begin{split}\|F\| = \sup_{\substack{x\in X\\x\not= 0}} \frac{\|F x\|}{\|x\|} = \|y_0\|.\end{split}\]

Wir kommen nun zum Rieszschen Darstellungssatz: Beschränkte lineare Funktionale eines Hilbertraumes \(X\) lassen sich besonders einfach darstellen. Die Darstellung aus obigem Beispiel erfasst alle beschränkten linearen Funktionale. Es gilt

Satz: Darstellungssatz von Riesz

Sei \(X\) ein Hilbertraum und \(F\in X^*\) beliebig. Dann gibt es ein eindeutig bestimmtes \(y\in X\), so dass \(F\) die Darstellung

\[F x = (x,y)\quad\forall x\in X\]

besitzt.

Bemerkung: Dieser Satz ist das zentrale Ergebnis der Hilbertraum-Theorie. Neben seiner Bedeutung als Darstellungssatz kann er auch als Existenz- und Eindeutigkeitsprinzip aufgefasst werden. Diese Bedeutung des Rieszschen Satzes ist Grundlage für die moderne Theorie der elliptischen partiellen Differentialgleichungen.

Sobolevräume

Im Kapitel stellen wir die für die Behandlung von partiellen Differentialgleichungen geeigneten Funktionenräume vor. In den Beispielen für Hilberträume wurde erwähnt, dass der Funktionenraum der stetigen Funktionen versehen mit der Quadratnorm \(\|x\|_2 = \sqrt{\int_a^b |x(t)|^2 dt}\) nicht vollständig und damit kein Banachraum ist. Das Problem muss für die Behandlung der partiellen Differentialgleichungen gelöst werden und führt uns zu den sogenannten Sobolevräumen.

Hilbertraum \(L_2(\Omega)\)

Da der Fokus in der Bearbeitung von partiellen Differentialgleichungen liegt, werden wir im Folgenden Funktionen auf beliebigen \(n\) dimensionalen Gebieten \(\Omega \subset \mathbb{R}^n\) und nicht nur zwingend auf Intervallen \([a,b] \subset \mathbb{R}\) betrachten.

Sei daher das Integrationsgebiet bzw. der Definitionsbereich der Funktion gegeben durch \(\Omega\) eine beliebige (nichtleere) offene Menge in \(\mathbb{R}^n\). Mit \(C(\Omega)\) bezeichnen wir die Menge aller stetigen Funktionen auf \(\Omega\).

Definition: Support

Für \(f\in C(\Omega)\) definieren wir den Träger oder Support von \(f\) durch

\[\mathop{Tr} f := \overline{\{x\in\mathbb{R}^n | f(x) \not=0 \}}.\]

wobei mit \(\overline{A}\) die Abschliessung einer Menge \(A \subset \mathbb{R}^n\) bezeichnet.

Mit \(C_0(\Omega)\) bezeichnen wir stetige Funktionen mit beschränktem Support in \(\Omega\). Das Integral für \(f\in C_0(\Omega)\) existiert: mit \(a>0\) hinreichend gross gilt

\[\int_\Omega f(x)dx = \int_{-a}^a \left(\ldots\int_{-a}^a f(x_1,\ldots, x_n) dx_1 \ldots \right) dx_n.\]
_images/MehrdimensionalesIntegral.png

Abb. 3 Berechnung von \(\int_\Omega f(x) dx\) in \(\mathbb{R}^2\).

Definition: \(C_0^\infty(\Omega)\) und \(L_2(\Omega)\)

Mit \(C_0^\infty(\Omega)\) bezeichnen wir die Menge aller Funktionen, welche in \(\Omega\) beliebig oft stetig differenzierbar sind und einen beschränkten in \(\Omega\) enthaltenen Support haben.

Mit der Quadratnorm

\[\|u\|_2 = \sqrt{\int_\Omega |u(x)|^2 dx}\]

definieren wir \(L_2(\Omega)\) als den zu \((C_0^\infty(\Omega),\|\cdot\|_2)\) konjugierten (dualen) Raum:

\[L_2(\Omega) := (C_0^\infty(\Omega), \|\cdot\|_2)^*.\]

Man kann zeigen, dass sich die klassischen Funktionen aus \(C_0^\infty(\Omega)\) in \(L_2(\Omega)\) wiederfinden. Mathematisch bedeutet das, dass \(C_0^\infty(\Omega)\) als Unterraum von \(L_2(\Omega)\) aufgefasst werden kann.

\[C_0^\infty(\Omega) \subset L_2(\Omega)\]

Man sagt in dem Fall, \(C_0^\infty(\Omega)\) ist in \(L_2(\Omega)\) eingebettet. Es gilt

Satz

Es gilt:

  • \(C_0^\infty(\Omega)\) liegt dicht in \(L_2(\Omega)\)

  • \(\overline{C_0^\infty(\Omega)}\) ist vollständig.

  • \(L_2(\Omega) = \overline{C_0^\infty(\Omega)}\)

Sobolevräume

Mit den Sobolevräumen kommt nun die Ableitung von Elemente aus dem \(L_2(\Omega)\) ins Spiel. Wir definieren den Sobolevraum \(H^k(\Omega)\) wie folgt

Definition: Sobolevraum \(H^k(\Omega)\)

Unter dem Sovolevraum \(H^k(\Omega)\) versteht man den linearen Raum aller linearen Funktionale \(F\) auf \(C_0^\infty(\Omega)\), für die \(F\) und sämtliche Ableitungen \(D^pF\) der Ordnung \(|p|\le m\) zu \(L_2(\Omega)\) gehören:

\[H^k(\Omega) := \{F\in L_2(\Omega) | D^p F \in L_2(\Omega), |p|\le k\}.\]

Mit \(x = (x_1, \ldots, x_n)^T \in \mathbb{R}^n\), dem Multiindex \(p = (p_1, \ldots, p_n)\), \(p_i\in \mathbb{N}_0\) für \(i=1,\ldots, n\) und

\[D^p = \left(\frac{\partial}{\partial x_1}\right)^{p_1} \ldots \left(\frac{\partial}{\partial x_n}\right)^{p_n},\]

sowie \(|p| = p_1 + \ldots + p_n\).

Nicht klar ist an dieser Stelle, was \(D^p F\) zu bedeuten hat, da \(F\) ein beschränktes lineares Funktional ist. Der klassische Ableitungsbegriff genügt nicht der in der Definition benutzten Ableitung, da dieser für Funktionale verallgemeinert werden muss.

Betrachten wir das Ganze mit Hilfe eines eindimensionalen Gebietes \(\Omega = [0,1]\) und für Funktionale \(F_u \in L_2([0,1])\), welche durch Funktionen \(u\in C^1([0,1])\) induziert sind:

\[F_u \varphi = \int_0^1 u(t) \varphi(t) dt\quad \text{für}\ \varphi\in C_0^\infty([0,1]).\]

Die Ableitung \(\frac{\partial}{\partial x} F_u\) definieren wir wie folgt:

\[\frac{\partial}{\partial x} F_u := F_{\frac{\partial u}{\partial x}}\]

Mit der Definition und partieller Integration erhalten wir

\[\begin{split}\begin{split}\frac{\partial}{\partial x} F_u = F_{\frac{\partial u}{\partial x}} & = \int_0^1 \frac{\partial u}{\partial x}(x) \varphi(x) dx \\ & = \underbrace{\frac{\partial}{\partial x} (u(x) \varphi(x)) \Big|_0^1}_{=0, \text{da}\ \varphi(0)=\varphi(1) = 0!} - \int_0^1 u(x) \frac{\partial \varphi}{\partial x}(x) dx\\ & = - \int_0^1 u(x) \frac{\partial \varphi}{\partial x}(x) dx.\end{split}\end{split}\]

Wir erhalten somit

\[\frac{\partial}{\partial x} F_u = - F_u (\frac{\partial \varphi}{\partial x})\quad\text{für}\quad \varphi \in C_0^\infty([0,1]).\]

Oder für mehrdimensionale Gebiete \(\Omega\)

\[\frac{\partial}{\partial x} F_u = - F_u (\frac{\partial \varphi}{\partial x})\quad\text{für}\quad \varphi \in C_0^\infty(\Omega).\]

Damit können wir eine verallgemeinerte Ableitung definieren, welche auch auf Funktionen \(u(x)\), welche selber nicht im klassischen Sinne differenzierbar sind, anwendbar ist:

Definition: Verallgemeinerte Ableitung (generalized derivative)

Für \(u\in L_2(\Omega)\) definieren wir \(g \in L_2(\Omega)\) als die verallgemeinerte Ableitung \(D^pu\) von \(u\) wobei

\[\int_\Omega g(x) \varphi(x) dx = (-1)^{|p|} \int_\Omega u(x) D^p\varphi dx\quad \forall\ \varphi\in C_0^\infty(\Omega).\]

Eine äquivalente oft benutzte Definition der Sobolevräume (leicht allgemeinere) baut auf den lokal integrierbaren Funktionen auf \(\Omega\) auf, gegeben durch

\[L_1^{\text{loc}}(\Omega) = \{u | u_K\in L_1(K)\ \forall\ \text{kompakten Teilmengen}\ K\subset\Omega\}.\]

Der Raum \(L_1^{\text{loc}}\) beinhaltet Funktionen, welche sich sehr schlecht in der Nähe des Randes \(\partial\Omega\) verhalten können.

Beispiele:

  • \(e^{e^{1/x}}\) ist in \(L_1^{\text{loc}}(0,1)\).

  • Ist \(\Omega\) unbeschränkt, dann ist die Funktion 1 in \(L_1^{\text{loc}}(\Omega)\), aber nicht in \(L_1\). Ist zum Beispiel \(\Omega = \mathbb{R}^n\), dann gilt

\[\int_{\mathbb{R}^n} 1 dx = \infty.\]

Definition: Sobolev Räume \(W_p^k(\Omega)\)

Sei \(k\in\mathbb{N}_0\) und \(1 \le p < \infty\), dann definieren wir die Sobolev Normen mit

\[\|u\|_{W_p^k(\Omega)} := \left(\sum_{|\alpha|\le k} \int_\Omega |D^\alpha u(x)|^p dx \right)^{1/p}\]

und die Sobolev Räume mit

\[W_p^k(\Omega) = \big\{u\in L_1^{\text{loc}}(\Omega) | \|u\|_{W_p^k(\Omega)} < \infty\big\}.\]

Ohne Beiweis gilt der Satz

Satz

Die Sobolev Räume \(W_p^k(\Omega)\) sind Banach Räume. Die Sobolev Räume \(W_2^k(\Omega) = H^k(\Omega)\) sind Hilberträume.

Beispiel: Wir werden primär den Sobolev Raum \(W_2^1(\Omega) = H^1(\Omega)\) benutzen. Hier gilt für die Norm

\[\|u\|_{H^1(\Omega)} := \left(\sum_{|\alpha|\le 1} \int_\Omega |D^\alpha u(x)|^2 dx \right)^{1/2}\]

und das Skalarprodukt

\[(u,v)_{H^1(\Omega)} = \sum_{|\alpha|\le 1} (D^\alpha u,D^\alpha v)_{L_2} = \sum_{|\alpha|\le 1} \int_\Omega D^\alpha u(x) D^\alpha v(x) dx\]

Variationsrechnung

Das Kapitel baut auf dem Buch [Kie10] auf.

Einführendes Beispiel

Wir beginnen mit einem eindimensionalen Problem: gesucht ist \(u\in C^1(a,b)\) so, dass

\[J(u) = \int_a^b \left(\frac{1}{2} u'(x)^2 - f(x) u(x)\right) dx \to \min\]

gilt.

Wie in der Analysis reeller Funktionen soll für das Beispiel ein notwendiges Kriterium für eine Extremalstelle des Funktionals berechnet werden. Für die Herleitung gehen wir davon aus, dass \(u(x)\) ein Minimierer des Funktionals \(J\) ist. Diesen stören wir mit einer beliebigen Funktion \(v(x) \in C_0^\infty(a,b)\). Das bedeutet, dass \(v\) beliebig oft stetig differenzierbar ist und \(v(a) = v(b) = 0\) gilt. Wir betrachten daher \(J(u(x) + \varepsilon v(x))\). Falls \(u(x)\) eine Extremalstelle ist, so muss

\[\frac{d}{d\varepsilon} J(u(x) + \varepsilon v(x))\big|_{\epsilon = 0} = 0\]

gelten.

_images/GateauxAbleitung.png

Abb. 4 Störung der Funktion \(u(x)\) durch \(\varepsilon v(x)\)

Wir berechnen daher

\[\begin{split}\begin{split} \frac{d}{d\varepsilon} J(u(x) + \varepsilon v(x))\big|_{\epsilon = 0} & = \frac{d}{d\varepsilon} \int_a^b \left( \frac{1}{2} (u'(x) + \varepsilon v'(x))^2 - f(x) (u(x) + \varepsilon v(x)) \right) dx \Big|_{\epsilon = 0}\\ & = \int_a^b \left((u'(x) + \varepsilon v'(x)) \cdot v'(x) - f(x) v(x)\right) dx \Big|_{\epsilon = 0}\\ & = \int_a^b \left(u'(x) \cdot v'(x) - f(x) v(x) \right) dx \end{split}\end{split}\]

Es folgt die schwache Gleichung

\[ \int_a^b \left(u'(x) \cdot v'(x) - f(x) v(x) \right) dx = 0\quad \forall v \in C_0^\infty(a,b).\]

Unter der Voraussetzung, dass \(u \in C^2(a,b)\) gilt, folgt mit Hilfe der partiellen Integration

\[ \underbrace{\left[ u'(x) v(x)\right]_a^b}_{=0\ \text{da}\ v(a)=v(b)=0} + \int_a^b \left(- u''(x) v(x) - f(x) v(x) \right) dx = 0\quad \forall v \in C_0^\infty(a,b).\]

und somit

\[ \int_a^b \left(- u''(x) - f(x)\right) v(x) dx = 0\quad \forall v \in C_0^\infty(a,b).\]

Der Fundamentalsatz der Variationsrechnung besagt, dass die Gleichung nur dann erfüllt sein kann, wenn die starke Gleichung

\[- u''(x) - f(x) = 0\quad\text{oder}\quad - u''(x) = f(x)\]

gilt.

Wie aus dem Beispiel zu sehen ist, sind die Ansprüche an die Regularität in der starken Gleichung in der Regel grösser als die der schwachen Gleichung. Für skalare Funktionen ist das in der Regel kein grösseres Problem. Hingegen im Mehrdimensionalen führt dies zur Regularitätstheorie. Es muss studiert werden, wann eine schwache Lösung auch eine starke ist. Dies hängt im Mehrdimensionalen mit unter auch vom Gebiet \(\Omega \subset \mathbb{R}^n\) ab.

Im Beispiel sind ein paar Grundkonzepte enthalten, welche wir wie folgt festhalten

Definition: Gâteaux-differenzierbar

Sei \(X\) ein Banachraum. Existiert für \(J: X \to \mathbb{R}\) ein gegebenes Funktional

\[G'(\varepsilon=0) = \lim_{\varepsilon \to 0} \frac{J(u + \varepsilon v) - J(u)}{\varepsilon},\]

so ist \(J\) in \(u\) in Richtung \(v\) Gâteaux-differenzierbar und die Ableitung wird als \(dJ(u,v)\) bezeichnet.

Das Gâteaux-Differential muss nicht zwingend linear noch stetig in \(v\) sein.

Definition: Fréchet-Ableitung

Existiert \(dJ(u,v)\) in \(u\in D \subset X\) für \(v\in X\) und ist \(dJ(u,v)\) linear in \(v\), so heisst \(dJ(u,v)\) die erste Variation oder Fréchet-Ableitung von \(J\) in Richtung \(v\). Wir schreiben in dem Fall

\[dJ(u,v) = \delta J(u) v = J'(u) v.\]

Ist dies für alle \(v\in D\subset X\) richtig, wobei \(D\) ein Unterraum von \(X\) ist, so ist

\[J'(u) : D \to \mathbb{R}\]

ein lineares Funktional.

Betrachten wir obiges Beispiel noch im mehrdimensionalen: gesucht ist \(u\in H_0^1(\Omega)\) so, dass

\[J(u) = \int_\Omega \left(\frac{1}{2} |\nabla u|^2 - f(x) u(x)\right) dx \to \min\]

gilt.

Wir berechnen die Gâteaux-Ableitung

\[\frac{d}{d\varepsilon} J(u + \varepsilon v)\big|_{\varepsilon = 0} = \int_\Omega \nabla u\cdot \nabla v - f v dx\]

Die Gâteaux-Ableitung ist linear in \(v\) und somit die erste Variation des Funktionals \(J : H_0^1(\Omega) \to \mathbb{R} \).

Mit der Forderung für einen Extremalpunkt \(J'(u) v = 0\) für alle \(v\in H_0^1(\Omega)\) haben wir die schwache Gleichung (vgl. Einleitung Poisson Gleichung (3))

\[\int_\Omega \nabla u\cdot\nabla v dx = \int f(x) v dx \quad \forall v \in H_0^1(\Omega).\]

Mit Hilfe des Gauss-Theorem oder partiellen Integration im mehrdimensionalen folgt die starke Gleichung (partielle Differentialgleichung)

\[-\Delta u = f(x)\quad x\in\Omega\]

mit der Dirichlet Randbedingung \(u(x) = 0\) auf dem Rand \(\partial\Omega\).

Bemerkung

Halten wir fest: Durch Testen der partiellen Differentialgleichung erhalten wir die schwache Gleichung, welche dem notwendigen Kriterium (Fréchet-Ableitung ist Null) eines zu (typischerweise) minimierenden Funktionals entspricht.

Euler-Lagrange Gleichung

Für die Herleitung der formalen Euler-Lagrange Gleichung beschränkten wir uns auf eindimensionale Probleme. Wir betrachten das zu minimierende Funktional

(17)\[J(u) = \int_a^b F(x,u,u') dx,\]

welches auf \(C^1(a,b)\) definiert ist.

Definition: lokaler Minimierer

Sei \(X\) ein Banachraum. Eine Funktion \(u\in X\) heisst lokaler Minimierere für das Funktional \(J : X \to \mathbb{R}\), falls

\[J(u) \le J(v)\quad\text{für alle}\ v\in X\ \text{mit}\ \|u-v\|_X < \delta\]

mit einer Konstante \(\delta > 0\) gilt.

Analog wird ein lokaler Maximierer definiert. Man beschränkt sich in der Regel auf Minimierer und betrachtet für Maximierer das Funktional \(-J\).

Wir betrachten nun das Funktional (17) und berechnen die Gâteaux-Ableitung für beliebiges \(v\in C_0^1(a,b)\)

\[\begin{split}\begin{split} \frac{d}{d\varepsilon} J(u+\varepsilon v)\big|_{\varepsilon=0} & = \frac{d}{d\varepsilon} \int_a^b F(x,u+\varepsilon v,u'+\varepsilon v') dx \Big|_{\varepsilon=0}\\ & = \int_a^b \left(\partial_{u} F(x,u,u')\cdot v + \partial_{u'} F(x,u,u')\cdot v' \right) dx \end{split}\end{split}\]

Partielle Integration des zweiten Summanden liefert

\[J'(u) v = \int_a^b \left(\partial_{u} F(x,u,u')\cdot v - \frac{d}{dx} \partial_{u'} F(x,u,u')\cdot v\right) dx + \left[ \partial_{u'} F(x,u,u')\cdot v \right]_a^b.\]

Da \(v\in C_0^1(a,b)\) folgt \(v(a) = v(b) = 0\) und damit

\[J'(u) v = \int_a^b \left(\partial_{u} F(x,u,u') - \frac{d}{dx} \partial_{u'} F(x,u,u')\right)\cdot v dx.\]

Wir können damit folgenden Satz festhalten:

Satz

Die Funktion \(u\in C^1(a,b)\) sei ein lokaler Minimierer für das Funktional (17) und die Lagrange-Funktion \(F: [a,b] \times \mathbb{R} \times \mathbb{R}\) sei stetig und bezüglich der letzten beiden Variablen stetig partiell differenzierbar. Dann gilt die Euler-Lagrange-Gleichung

(18)\[\frac{d}{dx} \partial_{u'} F(x,u,u') = \partial_{u} F(x,u,u').\]

Bemerkungen:

  • Wir haben den Satz für stetige Funktionen auf ganz \([a,b]\) notiert. Das ganze lässt sich leicht auf stückweise stetige Funktionen verallgemeinern.

  • Im hier notierten Fall von Funktionen in einer Variablen \(x\) gilt, dass eine Lösung der schwachen Gleichung

    \[\int_a^b \left(\partial_{u} F(x,u,u')\cdot v + \partial_{u'} F(x,u,u')\cdot v' \right) dx = 0\quad \forall\ v\in C_0^1(a,b)\]

    auch Lösung der starken Gleichung (18) ist.

  • Ist die Lagrange-Funktion nicht explizit von \(x\) abhängig, können wir die Lagrange-Gleichung umformen - vorausgesetzt die Regularität von \(y\) erlaubt ein zweimaliges Ableiten.

    Es gilt

    \[\begin{split}\begin{split} \frac{d}{dx} (F - u' F_{u'}) & = F_u u' + F_{u'} u'' - u'' F_{u'} - u' \frac{d}{dx} F_{u'}\\ & = \underbrace{\left(F_u - \frac{d}{dx} F_{u'}\right)}_{=0\, (*)} \cdot \underbrace{u'}_{=0\, (**)} = 0\quad \text{für}\, x\in [a,b].\end{split}\end{split}\]

    Daraus folgt, dass jede Lösung der Euler-Lagrange-Gleichung \((*)\) und jede Konstante \((**)\) ebenfalls Lösung der Differentialgleichung erster Ordnung

    (19)\[F(u,u') - u' F_{u'}(u,u') = c_1\quad\text{für}\, x\in [a,b]\]

    ist.

Beispiele zur Lösung der Euler-Lagrange-Gleichung

Kürzeste Verbindung zweier Punkte

Wir betrachten in der Ebene zwei Punkte \((a,A), (b,B)\) und suchen nach der kürzesten Kurve, welche diese verbindet. Beschreibt man die Kurve mit einer Funktion \(y: [a,b] \to \mathbb{R}\), so können wir die Länge mit dem Funktional

\[J(y) = \int_{a}^{b} \sqrt{1+y'(x)^2} dx\]

berechnen. Gesucht ist daher ein Minimierer des Funktionals \(J(y)\). Die zugehörige Euler-Lagrange Gleichung lautet

\[\frac{d}{dx} \frac{y'(x)}{\sqrt{1+y'(x)^2}} = 0.\]

Integration liefert

\[\frac{y'(x)}{\sqrt{1+y'(x)^2}} = a.\]

Durch auflösen nach \(y'\) und integrieren erhalten wir den Kanditaten für einen Minimierer

\[y(x) = \frac{a}{\sqrt{1-a^2}} x + b = m\, x + b,\]

also eine Gerade zwischen den beiden Punkten. Die beiden Integrationskonstanten können aus den Randbedingungen \(y(a) = A\) und \(y(b) = B\) bestimmt werden. Es stellt sich natürlich die Frage, ist die Lösung ein Minimierer und falls ja ein globaler?

Analog zur Analysis reeller Funktionen kann auf für Funktionale unter geeigneten Voraussetzungen ein Kriterium, die zweite Variation, berechnet werden. Es gilt der Satz

Satz

Sei die Lagrange-Funktion (17) zweimal bezüglich den letzten beiden Variablen stetig partiell differenzierbar. Dann ist die zweite Variateion gegeben durch die Bilinearform

\[\delta^2 J(u)(v,v) = \int_a^b \partial_{u,u}F(x,u,u') v^2 + 2 \partial_{u,u'} F(x,u,u') v v' + \partial_{u',u'} F(x,u,u') v'^2 dx.\]

Für einen lokalen Minimierer \(u\) gilt neben der notwendigen Bedingung \(J'(u) v = 0\) die hinreichende Bedingung von Legendre

\[\partial_{u',u'} F(x,u,u') \ge 0\quad \forall\ x\in [a,b].\]

Gilt für alle \(w \in D\subset C^1(a,b) \cap \{w(a)=A, w(b)=B\}\)

\[\delta^2 J(w)(v,v) \ge 0\quad \forall\ v \in C_0^1(a,b),\]

so ist \(u\) ein globaler Minimierer von \(J\) auf \(D\).

Der Satz auf das Beispiel angewandt zeigt uns, dass wir globalen Minimierer gefunden haben.

Das Problem von Johann Bernoulli

Das original Problem wurde wie folgt beschrieben:

Wenn in einer vertikalen Ebene zwei Punkte A und B gegeben sind, soll man dem beweglichen Punkt M eine Bahn AMB anweisen, auf welcher er von A ausgehend vermöge seiner eigenen Schwere in kürzester Zeit nach B gelangt.

Der Punkt \(B\) liegt trivialerweise unterhalb von \(A\). Entsprechend wählen wir ein passendes Koordinatensystem gemäss Abb. 5.

_images/BrachystochroneProblem.png

Abb. 5 Gesucht ist die schnellste Bahn.

Wir parametrieren die Bahnkurve nach der Zeit \(t\): \(\{(x(t),y(t)\,|\, t \in [0,T])\}\). Dabei gilt \((x(0),y(0)) = (0,0)\) und \((x(T),y(t)) = (b,B)\). Die Laufzeit ist gegeben durch \(T\). Nach dem Energieerhaltungsgesetz ist die Summe der kinetischen und potentiellen Energie längs der Bahn konstant

\[\frac{1}{2} m v^2 + m g (h_0-y) \equiv m g h_0.\]

Die Masse \(m\) ist offensichtlich nicht relevant. Mit \(h_0\) sei die Höhe zwischen \(A\) und \(B\) bezeichnet und mit \(g\) die Erdbeschleunigung. Für die Geschwindigkeit erhalten wir

\[v(t) = \sqrt{2 g y(t)}.\]

Andererseits folgt aus dem parametrischen Ansatz für die Geschwindigkeit

\[v(t) = \sqrt{\dot{x}(t)^2+\dot{y}(t)^2} = \sqrt{1 + \left(\frac{dy}{dt} \frac{dt}{dx}\right)^2}\cdot \dot{x}(t) = \sqrt{1 + y'(x(t))^2}\cdot \dot{x}(t)\]

Es gilt daher

\[\frac{\sqrt{1 + y'(x(t))^2}\cdot \dot{x}(t)}{\sqrt{2 g y(x(t))}} \equiv 1 \quad \forall t\in [0,T].\]

Wir nutzen diese Identität um die Laufzeit zu berechnen

\[T = \int_0^T 1 dt = \int_0^T \sqrt{\frac{1 + y'(x(t))^2}{2 g y(x(t))}} \cdot \dot{x}(t) dt\]

Mit der Transformation \(x=x(t)\) folgt \(dx = \dot{x}(t) dt\) und damit für das Integral

\[T = \int_0^b \sqrt{\frac{1 + y'(x)^2}{2 g y(x)}} dx.\]

Für das zu minimierende Funktional erhalten wir

(20)\[J(y) = \int_0^b \sqrt{\frac{1 + y'(x)^2}{y(x)}} dx,\]

wobei wir den Faktor \(1/\sqrt{2g}\) weglassen, da das Resultat unabhängig davon ist. Die Graphitation beeinflusst die Kurvenform nicht.

Der Integrand des Funktional (20) ist für \(x=0\) unbestimmt, einerseits kann aus physikalischen Gründen \(y'(0) = +\infty\) sein und andererseits gilt \(y(0) = 0\). Das Integral ist daher als uneigentliches Integral zu verstehen. Zu dem ist \(J\) nur auf \((0,b]\) positive Funktionen \(y(x)\) definiert. Deshalb legen wir die zulässigen Funktionen wie folgt fest:

\[\begin{split}\begin{split} D = C[0,b] & \cap C^1(0,b] \cap \{y(0) = 0, y(b) = B\}\\ & \cap \{y > 0 \text{in}\ (0,b]\} \cap \{J(y^) < \infty\}.\end{split}\end{split}\]

Die Lagrange-Funktion hat im Beispiel die spezielle Eigenschaft, dass sie nicht explizit von \(x\) abhängig ist. Daher benutzen wir die Form (19), womit die Differentialgleichung

(21)\[y'(x) = \frac{\sqrt{2r- y(x)}}{\sqrt{y(x)}}\quad \text{mit}\ 2r = \frac{1}{c_1^2}>0\]

folgt. Die Differentialgleichung kann in dieser nicht geschlossen gelöst werden. Daher wechseln wir wieder in die parametrische Form

\[(x,y(x)) = (\hat{x}(s), \hat{y}(s)),\quad x\in[0,b],\ s \in [s_0,s_b],\]

wobei \(s\) nicht die physikalische Zeit ist. Es gilt

\[\hat{y}(s) = y(\hat{x}(s)),\quad \frac{dy}{ds}(s) = y'(\hat{x}(s)) \frac{d\hat{x}}{ds}(s).\]

Die Differentialgleichung (21) eingesetzt liefert

\[\frac{d\hat{x}}{ds}(s) = \frac{d\hat{y}}{ds}(s) \frac{1}{y'(\hat{x}(s))} = \frac{d\hat{y}}{ds}(s) \sqrt{\frac{\hat{y}(s)}{2r-\hat{y}(s)}}.\]

Es kann gezeigt werden, dass

\[\begin{split}\begin{split} \hat{x}(s) & = r\cdot (s - \sin(s))\\ \hat{y}(s) & = r\cdot (1 - \cos(s))\end{split}\end{split}\]

für \(s\in [0,s_b]\) Lösung und damit Lösungskurve der Aufgabe ist. Die Bahnkurve wird Brachystochrone genannt und durch eine Zykloide beschrieben. Der Parameter \(r\) ist gegeben durch

\[r = \frac{B}{1-\cos(s_b)}\]

und \(s_b\) ist implizit gegeben durch die Gleichung

\[\frac{b}{B} = \frac{s_b-\sin(s_b)}{1-\cos(s_b)} =: f(s_b).\]
import matplotlib.pyplot as plt
import numpy as np

f = lambda sb : (sb - np.sin(sb))/(1-np.cos(sb))

from scipy.optimize import fsolve
from myst_nb import glue
b=8
B=1
sb = fsolve(lambda s: f(s)-b/B,5)[0]
r = B/(1-np.cos(sb))
glue("sb_example", np.round(sb,4),display=False)
glue("r_example", np.round(r,4),display=False)

sbi = np.linspace(1e-3,2*3.14,400)
plt.plot(sbi, f(sbi),label='$f(s_b)$')
plt.legend()
plt.axvline(np.pi,c='gray')
plt.axhline(np.pi/2,c='gray')
plt.grid()
plt.ylim(0,10)
plt.title('$f(s_b)$ ist monoton wachsend')
plt.xlabel('$s_b$')   
plt.ylabel('$b/B$')
plt.show()
_images/Variationsrechnung_1_2.png

Die Funktion \(f(s_b)\) ist monoton wachsend. Für \(b/B \ge \pi/2\) gilt \(s_b \in [\pi, 2\pi]\). Das bedeutet, dass das Minimum der Bahnkurve tiefer als der Punkt \(B\) liegt. Für \(b=8\) und \(B=1\) folgt \(s_b =\) 4.9729 und \(r = \) 1.347. Damit können wir die Bahnkurve visualisieren:

sbi = np.linspace(0,sb,400)

plt.plot(r*(sbi-np.sin(sbi)),-r*(1-np.cos(sbi)))
plt.grid()
plt.gca().set_aspect(1)
plt.xlabel('x')
plt.ylabel('-y')
plt.title('Bahnkurve')
plt.show()
_images/Variationsrechnung_3_0.png

Einführung PDE

Unter Zuhilfenahme von Differentialoperatoren können Gleichungen für Funktionen notiert werden. Solche Gleichungen nennt man Differentialgleichungen. Eine gewöhnliche Differentialgleichung (ODE) erfordert die Differentiation bezüglich einer Variablen.

Beispiele:

  • Lineare ODE 2. Ordnung

    \[-u''(x) + u(x) = f(x).\]
  • Nichtlineare ODE 1. Ordnung

    \[u'(x) = e^{-u(x)}\]

Numerik für partielle Differentialgleichungen

Anwendungen

Anwendungen

Literaturverzeichnis

BWHM10

Klemens Burg, Friedrich Wille, Herbert Haf, and Andreas Meister. Partielle Differentialgleichungen und funktionalanalytische Grundlagen. Vieweg + Teubner Verlag, 2010. URL: https://www.springer.com/de/book/9783834812940.

BWHM17

Klemens Burg, Friedrich Wille, Herbert Haf, and Andreas Meister. Höhere Mathematik für Ingenieure Band I: Analysis. Vieweg + Teubner Verlag, 2017. URL: https://www.springer.com/de/book/9783834824387.

Heu06

Harro Heuser. Funktionalanalysis. Vieweg + Teubner Verlag, 2006. URL: https://www.springer.com/de/book/9783835100268.

Heu08

Harro Heuser. Lehrbuch der Analysis. Volume 2. Vieweg + Teubner Verlag, 2008. URL: https://www.springer.com/de/book/9783322968128.

Kie10

Hansjörg Kielhöfer. Variationsrechnung, Eine Einführung in die Theorie einer unabhängigen Variablen mit Beispielen und Aufgaben. Vieweg+Teubner Verlag, 2010. URL: https://www.springer.com/de/book/9783834809650.

SHL21

Joachim Schöberl, Matthias Hochsteger, and Christopher Lackner. Interactive introduction to the Finite Element Method. TU Wien, 2021. URL: https://github.com/JSchoeberl/iFEM.

S+21

Joachim Schöberl and others. NGSolve Documentation. TU Wien, 2021. URL: https://ngsolve.org.